1ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto//===- subzero/crosstest/test_vector_ops.cpp - Vector tests -----*- C++ -*-===// 2ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// 3ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// The Subzero Code Generator 4ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// 5ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// This file is distributed under the University of Illinois Open Source 6ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// License. See LICENSE.TXT for details. 7ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// 8ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto//===----------------------------------------------------------------------===// 9ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// 10ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// This file implements the vector shuffle routines. 11ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// 12ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto//===----------------------------------------------------------------------===// 13ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 14ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#include "test_vector_ops.h" 15ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 16ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#include <algorithm> 17ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#include <type_traits> 18ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 19ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portonamespace { 20ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// SHUFFLETESTS_TABLE declares several shufflevector test cases. Each test case 21ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// has 16 indexes because 16 is the max number of elements in a vector type in 22ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// PNaCl bitcode. For vector types with fewer than 16 elements, the additional 23ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// indexes are ignored. This strategy allows a single test table definition. 24ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#define SHUFFLETESTS_TABLE \ 25ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* Indexes... */ \ 26ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* Simple tests splatting elements. */ \ 27ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) \ 28ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) \ 29ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) \ 30ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3) \ 31ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4) \ 32ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5) \ 33ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6) \ 34ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7) \ 35ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8) \ 36ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9) \ 37ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10) \ 38ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11) \ 39ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12) \ 40ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13) \ 41ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14) \ 42ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15) \ 43ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16) \ 44ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17) \ 45ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18) \ 46ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19) \ 47ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20) \ 48ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21) \ 49ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22) \ 50ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23) \ 51ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24) \ 52ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25) \ 53ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26) \ 54ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27) \ 55ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28) \ 56ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29) \ 57ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30) \ 58ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31) \ 59ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* Rotating vectors. */ \ 60ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) \ 61ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17) \ 62ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18) \ 63ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) \ 64ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) \ 65ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21) \ 66ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22) \ 67ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23) \ 68ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) \ 69ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25) \ 70ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26) \ 71ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27) \ 72ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28) \ 73ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29) \ 74ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30) \ 75ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31) \ 76ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0) \ 77ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1) \ 78ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2) \ 79ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3) \ 80ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4) \ 81ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5) \ 82ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6) \ 83ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7) \ 84ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8) \ 85ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) \ 86ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) \ 87ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) \ 88ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) \ 89ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) \ 90ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) \ 91ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* Swapping elements. */ \ 92ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 93ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 94ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 95ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 96ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 97ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 98ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 99ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 100ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 101ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 102ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 103ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 104ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 105ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 106ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(15, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 107ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 108ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(17, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 109ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 110ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(19, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 111ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 112ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(21, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 113ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(22, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 114ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 115ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(24, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 116ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(25, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 117ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(26, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 118ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(27, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 119ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(28, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 120ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(29, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 121ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(30, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 122ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(31, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 123ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 124ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 3, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 125ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 4, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 126ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 127ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 6, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 128ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 7, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 129ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 8, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 130ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 9, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 131ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 132ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 133ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 12, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 134ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 13, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 135ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 136ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 15, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 137ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 16, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 138ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 17, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 139ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 18, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 140ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 19, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 141ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 20, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 142ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 21, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 143ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 22, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 144ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 23, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 145ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 24, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 146ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 25, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 147ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 26, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 148ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 27, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 149ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 28, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 150ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 29, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 151ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 30, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 152ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 31, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 153ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 154ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 155ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 156ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 4, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 157ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 158ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 6, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 159ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 7, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 160ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 8, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 161ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 9, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 162ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 10, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 163ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 164ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 165ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 13, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 166ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 14, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 167ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 15, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 168ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 16, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 169ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 17, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 170ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 18, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 171ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 19, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 172ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 20, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 173ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 21, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 174ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 22, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 175ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 23, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 176ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 24, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 177ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 25, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 178ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 26, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 179ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 27, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 180ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 28, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 181ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 29, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 182ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 30, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 183ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 31, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 184ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 185ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 186ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 187ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 188ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 189ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 6, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 190ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 7, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 191ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 8, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 192ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 9, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 193ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 194ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 11, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 195ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 196ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 197ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 14, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 198ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 15, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 199ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 16, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 200ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 17, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 201ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 18, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 202ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 19, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 203ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 20, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 204ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 205ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 22, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 206ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 23, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 207ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 24, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 208ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 25, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 209ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 26, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 210ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 27, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 211ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 28, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 212ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 29, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 213ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 30, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 214ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 31, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 215ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 216ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 217ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 218ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 219ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 220ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 6, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 221ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 7, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 222ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 8, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 223ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 9, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 224ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 10, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 225ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 11, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 226ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 12, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 227ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 13, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 228ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 14, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 229ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 15, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 230ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 16, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 231ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 17, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 232ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 18, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 233ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 19, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 234ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 20, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 235ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 21, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 236ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 22, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 237ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 22, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 238ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 23, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 239ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 24, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 240ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 25, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 241ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 26, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 242ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 27, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 243ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 28, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 244ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 29, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 245ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 30, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 246ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 31, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 247ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 248ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 249ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 250ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 251ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 252ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 253ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 254ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 7, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 255ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 8, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 256ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 9, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 257ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 258ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 259ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 12, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 260ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 13, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 261ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 262ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 15, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 263ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 264ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 17, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 265ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 18, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 266ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 19, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 267ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 20, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 268ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 21, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 269ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 22, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 270ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 23, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 271ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 24, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 272ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 25, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 273ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 26, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 274ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 27, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 275ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 28, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 276ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 29, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 277ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 30, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 278ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 31, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 279ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 280ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 281ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 282ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 283ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 284ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 285ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 286ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 8, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 287ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 9, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 288ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 289ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 11, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 290ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 12, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 291ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 13, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 292ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 14, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 293ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 294ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 295ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 17, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 296ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 18, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 297ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 19, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 298ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 20, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 299ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 21, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 300ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 22, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 301ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 23, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 302ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 24, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 303ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 25, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 304ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 26, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 305ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 27, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 306ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 28, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 307ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 29, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 308ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 30, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 309ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 31, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 310ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 0, 8, 9, 10, 11, 12, 13, 14, 15) \ 311ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 1, 8, 9, 10, 11, 12, 13, 14, 15) \ 312ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 2, 8, 9, 10, 11, 12, 13, 14, 15) \ 313ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 10, 11, 12, 13, 14, 15) \ 314ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 4, 8, 9, 10, 11, 12, 13, 14, 15) \ 315ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 5, 8, 9, 10, 11, 12, 13, 14, 15) \ 316ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 6, 8, 9, 10, 11, 12, 13, 14, 15) \ 317ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 8, 8, 9, 10, 11, 12, 13, 14, 15) \ 318ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 9, 8, 9, 10, 11, 12, 13, 14, 15) \ 319ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 10, 8, 9, 10, 11, 12, 13, 14, 15) \ 320ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 11, 8, 9, 10, 11, 12, 13, 14, 15) \ 321ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 12, 8, 9, 10, 11, 12, 13, 14, 15) \ 322ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 13, 8, 9, 10, 11, 12, 13, 14, 15) \ 323ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 14, 8, 9, 10, 11, 12, 13, 14, 15) \ 324ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 15, 8, 9, 10, 11, 12, 13, 14, 15) \ 325ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 16, 8, 9, 10, 11, 12, 13, 14, 15) \ 326ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 17, 8, 9, 10, 11, 12, 13, 14, 15) \ 327ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 18, 8, 9, 10, 11, 12, 13, 14, 15) \ 328ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 19, 8, 9, 10, 11, 12, 13, 14, 15) \ 329ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 20, 8, 9, 10, 11, 12, 13, 14, 15) \ 330ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 21, 8, 9, 10, 11, 12, 13, 14, 15) \ 331ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 22, 8, 9, 10, 11, 12, 13, 14, 15) \ 332ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 23, 8, 9, 10, 11, 12, 13, 14, 15) \ 333ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 24, 8, 9, 10, 11, 12, 13, 14, 15) \ 334ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 25, 8, 9, 10, 11, 12, 13, 14, 15) \ 335ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 26, 8, 9, 10, 11, 12, 13, 14, 15) \ 336ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 27, 8, 9, 10, 11, 12, 13, 14, 15) \ 337ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 28, 8, 9, 10, 11, 12, 13, 14, 15) \ 338ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 29, 8, 9, 10, 11, 12, 13, 14, 15) \ 339ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 30, 8, 9, 10, 11, 12, 13, 14, 15) \ 340ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 31, 0, 9, 10, 11, 12, 13, 14, 15) \ 341ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 0, 9, 10, 11, 12, 13, 14, 15) \ 342ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 1, 9, 10, 11, 12, 13, 14, 15) \ 343ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 10, 11, 12, 13, 14, 15) \ 344ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 3, 9, 10, 11, 12, 13, 14, 15) \ 345ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 4, 9, 10, 11, 12, 13, 14, 15) \ 346ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 5, 9, 10, 11, 12, 13, 14, 15) \ 347ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 6, 9, 10, 11, 12, 13, 14, 15) \ 348ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 7, 9, 10, 11, 12, 13, 14, 15) \ 349ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 9, 9, 10, 11, 12, 13, 14, 15) \ 350ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 10, 9, 10, 11, 12, 13, 14, 15) \ 351ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 11, 9, 10, 11, 12, 13, 14, 15) \ 352ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 12, 9, 10, 11, 12, 13, 14, 15) \ 353ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 13, 9, 10, 11, 12, 13, 14, 15) \ 354ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 14, 9, 10, 11, 12, 13, 14, 15) \ 355ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 15, 9, 10, 11, 12, 13, 14, 15) \ 356ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 16, 9, 10, 11, 12, 13, 14, 15) \ 357ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 17, 9, 10, 11, 12, 13, 14, 15) \ 358ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 18, 9, 10, 11, 12, 13, 14, 15) \ 359ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 19, 9, 10, 11, 12, 13, 14, 15) \ 360ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 20, 9, 10, 11, 12, 13, 14, 15) \ 361ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 21, 9, 10, 11, 12, 13, 14, 15) \ 362ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 22, 9, 10, 11, 12, 13, 14, 15) \ 363ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 23, 9, 10, 11, 12, 13, 14, 15) \ 364ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 24, 9, 10, 11, 12, 13, 14, 15) \ 365ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 25, 9, 10, 11, 12, 13, 14, 15) \ 366ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 26, 9, 10, 11, 12, 13, 14, 15) \ 367ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 27, 9, 10, 11, 12, 13, 14, 15) \ 368ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 28, 9, 10, 11, 12, 13, 14, 15) \ 369ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 29, 9, 10, 11, 12, 13, 14, 15) \ 370ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 30, 9, 10, 11, 12, 13, 14, 15) \ 371ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 31, 9, 10, 11, 12, 13, 14, 15) \ 372ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 10, 11, 12, 13, 14, 15) \ 373ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 10, 11, 12, 13, 14, 15) \ 374ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 2, 10, 11, 12, 13, 14, 15) \ 375ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 3, 10, 11, 12, 13, 14, 15) \ 376ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 4, 10, 11, 12, 13, 14, 15) \ 377ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 10, 11, 12, 13, 14, 15) \ 378ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 6, 10, 11, 12, 13, 14, 15) \ 379ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 10, 11, 12, 13, 14, 15) \ 380ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 10, 11, 12, 13, 14, 15) \ 381ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 10, 11, 12, 13, 14, 15) \ 382ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 10, 11, 12, 13, 14, 15) \ 383ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 10, 11, 12, 13, 14, 15) \ 384ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 10, 11, 12, 13, 14, 15) \ 385ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 14, 10, 11, 12, 13, 14, 15) \ 386ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 15, 10, 11, 12, 13, 14, 15) \ 387ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 16, 10, 11, 12, 13, 14, 15) \ 388ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 10, 11, 12, 13, 14, 15) \ 389ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 18, 10, 11, 12, 13, 14, 15) \ 390ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 19, 10, 11, 12, 13, 14, 15) \ 391ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 20, 10, 11, 12, 13, 14, 15) \ 392ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 21, 10, 11, 12, 13, 14, 15) \ 393ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 10, 11, 12, 13, 14, 15) \ 394ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 23, 10, 11, 12, 13, 14, 15) \ 395ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 24, 10, 11, 12, 13, 14, 15) \ 396ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 25, 10, 11, 12, 13, 14, 15) \ 397ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 26, 10, 11, 12, 13, 14, 15) \ 398ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 27, 10, 11, 12, 13, 14, 15) \ 399ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 28, 10, 11, 12, 13, 14, 15) \ 400ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 29, 10, 11, 12, 13, 14, 15) \ 401ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 30, 10, 11, 12, 13, 14, 15) \ 402ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 31, 10, 11, 12, 13, 14, 15) \ 403ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 12, 13, 14, 15) \ 404ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 11, 12, 13, 14, 15) \ 405ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 11, 12, 13, 14, 15) \ 406ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 11, 12, 13, 14, 15) \ 407ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 11, 12, 13, 14, 15) \ 408ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 11, 12, 13, 14, 15) \ 409ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 11, 12, 13, 14, 15) \ 410ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 11, 12, 13, 14, 15) \ 411ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 11, 12, 13, 14, 15) \ 412ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 11, 12, 13, 14, 15) \ 413ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 11, 12, 13, 14, 15) \ 414ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 11, 12, 13, 14, 15) \ 415ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 11, 12, 13, 14, 15) \ 416ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 11, 12, 13, 14, 15) \ 417ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 11, 12, 13, 14, 15) \ 418ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 11, 12, 13, 14, 15) \ 419ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 11, 12, 13, 14, 15) \ 420ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 18, 11, 12, 13, 14, 15) \ 421ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 11, 12, 13, 14, 15) \ 422ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, 11, 12, 13, 14, 15) \ 423ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 21, 11, 12, 13, 14, 15) \ 424ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 22, 11, 12, 13, 14, 15) \ 425ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 23, 11, 12, 13, 14, 15) \ 426ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 24, 11, 12, 13, 14, 15) \ 427ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 25, 11, 12, 13, 14, 15) \ 428ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 26, 11, 12, 13, 14, 15) \ 429ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 27, 11, 12, 13, 14, 15) \ 430ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 28, 11, 12, 13, 14, 15) \ 431ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 29, 11, 12, 13, 14, 15) \ 432ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 30, 11, 12, 13, 14, 15) \ 433ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 31, 11, 12, 13, 14, 15) \ 434ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 12, 13, 14, 15) \ 435ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 12, 13, 14, 15) \ 436ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 12, 13, 14, 15) \ 437ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 12, 13, 14, 15) \ 438ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 4, 12, 13, 14, 15) \ 439ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 12, 13, 14, 15) \ 440ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 6, 12, 13, 14, 15) \ 441ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 7, 12, 13, 14, 15) \ 442ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 8, 12, 13, 14, 15) \ 443ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 9, 12, 13, 14, 15) \ 444ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 12, 13, 14, 15) \ 445ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 12, 13, 14, 15) \ 446ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 12, 13, 14, 15) \ 447ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 12, 13, 14, 15) \ 448ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 12, 13, 14, 15) \ 449ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 12, 13, 14, 15) \ 450ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 17, 12, 13, 14, 15) \ 451ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 18, 12, 13, 14, 15) \ 452ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 12, 13, 14, 15) \ 453ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 12, 13, 14, 15) \ 454ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 21, 12, 13, 14, 15) \ 455ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 12, 13, 14, 15) \ 456ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, 12, 13, 14, 15) \ 457ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 24, 12, 13, 14, 15) \ 458ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 12, 13, 14, 15) \ 459ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 26, 12, 13, 14, 15) \ 460ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 27, 12, 13, 14, 15) \ 461ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 28, 12, 13, 14, 15) \ 462ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 29, 12, 13, 14, 15) \ 463ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30, 12, 13, 14, 15) \ 464ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 31, 12, 13, 14, 15) \ 465ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 13, 14, 15) \ 466ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 13, 14, 15) \ 467ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 13, 14, 15) \ 468ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 13, 14, 15) \ 469ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 4, 13, 14, 15) \ 470ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 5, 13, 14, 15) \ 471ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 6, 13, 14, 15) \ 472ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 7, 13, 14, 15) \ 473ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 8, 13, 14, 15) \ 474ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 9, 13, 14, 15) \ 475ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 13, 14, 15) \ 476ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 13, 14, 15) \ 477ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 13, 14, 15) \ 478ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 13, 14, 15) \ 479ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 13, 14, 15) \ 480ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 13, 14, 15) \ 481ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 13, 14, 15) \ 482ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 18, 13, 14, 15) \ 483ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 19, 13, 14, 15) \ 484ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 13, 14, 15) \ 485ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 21, 13, 14, 15) \ 486ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 22, 13, 14, 15) \ 487ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 23, 13, 14, 15) \ 488ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 13, 14, 15) \ 489ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 25, 13, 14, 15) \ 490ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 26, 13, 14, 15) \ 491ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 27, 13, 14, 15) \ 492ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 28, 13, 14, 15) \ 493ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 29, 13, 14, 15) \ 494ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 30, 13, 14, 15) \ 495ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 31, 13, 14, 15) \ 496ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 14, 15) \ 497ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 14, 15) \ 498ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2, 14, 15) \ 499ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, 14, 15) \ 500ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 14, 15) \ 501ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 5, 14, 15) \ 502ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 6, 14, 15) \ 503ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 7, 14, 15) \ 504ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 8, 14, 15) \ 505ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 9, 14, 15) \ 506ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 10, 14, 15) \ 507ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 14, 15) \ 508ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12, 14, 15) \ 509ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) \ 510ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 14, 15) \ 511ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16, 14, 15) \ 512ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 14, 15) \ 513ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 14, 15) \ 514ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 14, 15) \ 515ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 20, 14, 15) \ 516ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 21, 14, 15) \ 517ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 22, 14, 15) \ 518ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 23, 14, 15) \ 519ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 14, 15) \ 520ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 25, 14, 15) \ 521ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 26, 14, 15) \ 522ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 27, 14, 15) \ 523ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 28, 14, 15) \ 524ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 29, 14, 15) \ 525ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 30, 14, 15) \ 526ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 31, 14, 15) \ 527ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 15) \ 528ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 15) \ 529ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2, 15) \ 530ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3, 15) \ 531ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 15) \ 532ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 15) \ 533ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 6, 15) \ 534ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 7, 15) \ 535ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 8, 15) \ 536ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 9, 15) \ 537ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 10, 15) \ 538ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 11, 15) \ 539ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 15) \ 540ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 15) \ 541ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 15) \ 542ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 15) \ 543ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 15) \ 544ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 18, 15) \ 545ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 19, 15) \ 546ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 20, 15) \ 547ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 21, 15) \ 548ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 22, 15) \ 549ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 23, 15) \ 550ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 24, 15) \ 551ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 25, 15) \ 552ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 26, 15) \ 553ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 27, 15) \ 554ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 28, 15) \ 555ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 29, 15) \ 556ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 30, 15) \ 557ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 31, 15) \ 558ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0) \ 559ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1) \ 560ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2) \ 561ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3) \ 562ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 4) \ 563ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 5) \ 564ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6) \ 565ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 7) \ 566ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 8) \ 567ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 9) \ 568ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 10) \ 569ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 11) \ 570ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 12) \ 571ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 13) \ 572ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14) \ 573ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16) \ 574ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17) \ 575ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18) \ 576ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19) \ 577ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 20) \ 578ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 21) \ 579ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 22) \ 580ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 23) \ 581ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 24) \ 582ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 25) \ 583ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 26) \ 584ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 27) \ 585ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 28) \ 586ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 29) \ 587ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 30) \ 588ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 31) \ 589ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* Testing the optimized shufflevectors for x86. */ \ 590ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src0, Src0, Src0) */ \ 591ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0) \ 592ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(2, 2, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3) \ 593ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src0, Src0, Src1) */ \ 594ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 1, 3, 7, 0, 1, 3, 7, 0, 1, 3, 7, 0, 1, 3, 7) \ 595ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(2, 2, 2, 5, 2, 2, 2, 5, 2, 2, 2, 5, 2, 2, 2, 5) \ 596ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src0, Src1, Src0) */ \ 597ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 2, 6, 0, 1, 2, 6, 0, 1, 2, 6, 0, 1, 2, 6, 0) \ 598ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 2, 3, 5, 3, 2, 3, 5, 3, 2, 3, 5, 3, 2, 3, 5) \ 599ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src0, Src1, Src1) */ \ 600ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(2, 3, 5, 7, 2, 3, 5, 7, 2, 3, 5, 7, 2, 3, 5, 7) \ 601ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 3, 7, 6, 3, 3, 7, 6, 3, 3, 7, 6, 3, 3, 7, 6) \ 602ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src1, Src0, Src0) */ \ 603ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 7, 0, 0, 3, 7, 0, 0, 3, 7, 0, 0, 3, 7, 0, 0) \ 604ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 7, 3, 3, 1, 7, 3, 3, 1, 7, 3, 3, 1, 7, 3, 3) \ 605ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src1, Src0, Src1) */ \ 606ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 4, 1, 5, 0, 4, 1, 5, 0, 4, 1, 5, 0, 4, 1, 5) \ 607ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 7, 0, 7, 0, 7, 0, 7, 0, 7, 0, 7, 0, 7, 0, 7) \ 608ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4) \ 609ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 7, 3, 6, 1, 7, 3, 6, 1, 7, 3, 6, 1, 7, 3, 6) \ 610ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 6, 3, 7, 0, 6, 3, 7, 0, 6, 3, 7, 0, 6, 3, 7) \ 611ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src1, Src1, Src0) */ \ 612ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0) \ 613ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3) \ 614ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(1, 5, 3, 6, 1, 5, 3, 6, 1, 5, 3, 6, 1, 5, 3, 6) \ 615ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 6, 2, 6, 0, 6, 2, 6, 0, 6, 2, 6, 0, 6, 2, 6) \ 616ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src0, Src1, Src1, Src1) */ \ 617ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(0, 7, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7) \ 618ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(3, 6, 7, 4, 3, 6, 7, 4, 3, 6, 7, 4, 3, 6, 7, 4) \ 619ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src0, Src0, Src0) */ \ 620ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 3, 3, 0, 4, 3, 3, 0, 4, 3, 3, 0, 4, 3, 3, 0) \ 621ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 0, 0, 3, 6, 0, 0, 3, 6, 0, 0, 3, 6, 0, 0, 3) \ 622ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src0, Src0, Src1) */ \ 623ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 3, 2, 6, 4, 3, 2, 6, 4, 3, 2, 6, 4, 3, 2, 6) \ 624ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(5, 2, 1, 4, 5, 2, 1, 4, 5, 2, 1, 4, 5, 2, 1, 4) \ 625ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 0, 0, 4, 6, 0, 0, 4, 6, 0, 0, 4, 6, 0, 0, 4) \ 626ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(5, 2, 2, 6, 5, 2, 2, 6, 5, 2, 2, 6, 5, 2, 2, 6) \ 627ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src0, Src1, Src0) */ \ 628ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 0, 5, 1, 4, 0, 5, 1, 4, 0, 5, 1, 4, 0, 5, 1) \ 629ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2, 7, 2) \ 630ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3) \ 631ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 1, 5, 0, 7, 1, 5, 0, 7, 1, 5, 0, 7, 1, 5, 0) \ 632ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 3, 6, 2, 4, 3, 6, 2, 4, 3, 6, 2, 4, 3, 6, 2) \ 633ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src0, Src1, Src1) */ \ 634ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 0, 3, 2, 6, 0, 3, 2, 6, 0, 3, 2, 6, 0, 3, 2) \ 635ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 2, 4, 7, 4, 2, 4, 7, 4, 2, 4, 7, 4, 2, 4, 7) \ 636ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src1, Src0, Src0) */ \ 637ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 5, 2, 3, 6, 5, 2, 3, 6, 5, 2, 3, 6, 5, 2, 3) \ 638ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 7, 0, 1, 7, 7, 0, 1, 7, 7, 0, 1, 7, 7, 0, 1) \ 639ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src1, Src0, Src1) */ \ 640ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 6, 0, 5, 7, 6, 0, 5, 7, 6, 0, 5, 7, 6, 0, 5) \ 641ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(4, 5, 3, 7, 4, 5, 3, 7, 4, 5, 3, 7, 4, 5, 3, 7) \ 642ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src1, Src1, Src0) */ \ 643ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(6, 6, 4, 0, 6, 6, 4, 0, 6, 6, 4, 0, 6, 6, 4, 0) \ 644ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 4, 6, 1, 7, 4, 6, 1, 7, 4, 6, 1, 7, 4, 6, 1) \ 645ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto /* (Src1, Src1, Src1, Src1) */ \ 646ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(7, 6, 4, 4, 7, 6, 4, 4, 7, 6, 4, 4, 7, 6, 4, 4) \ 647ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto X(5, 7, 7, 6, 5, 7, 7, 6, 5, 7, 7, 6, 5, 7, 7, 6) 648ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto/* End of x86-optimized shufflevectors. */ 649ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto//#define X(...) 650ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 651ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// ShuffleVectorTest declares the template functions that are used to shuffle 652ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// the test vectors. It has specific template methods depending on how many 653ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto// elements VecTy has. 654ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portotemplate <typename VecTy> class ShuffleVectorTest { 655ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto //---------------------------------------------------------------------------- 656ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // 657ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // V4??? Shuffles. 658ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // 659ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto //---------------------------------------------------------------------------- 660ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto template <typename Ty, uint8_t Idx0, uint8_t Idx1, uint8_t Idx2, uint8_t Idx3, 661ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, 662ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t, uint8_t, uint8_t, uint8_t, uint8_t> 663ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto static typename std::enable_if<Vectors<Ty>::NumElements == 4, Ty>::type 664ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto shufflevector(Ty V1, Ty V2) { 665ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto const uint8_t NumElements = 4; 666ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return __builtin_shufflevector( 667ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto V1, V2, Idx0 % (NumElements * 2), Idx1 % (NumElements * 2), 668ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx2 % (NumElements * 2), Idx3 % (NumElements * 2)); 669ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } 670ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 671ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto //---------------------------------------------------------------------------- 672ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // 673ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // V8??? Shuffles. 674ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // 675ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto //---------------------------------------------------------------------------- 676ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto template <typename Ty, uint8_t Idx0, uint8_t Idx1, uint8_t Idx2, uint8_t Idx3, 677ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t Idx4, uint8_t Idx5, uint8_t Idx6, uint8_t Idx7, uint8_t, 678ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t> 679ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto static typename std::enable_if<Vectors<Ty>::NumElements == 8, Ty>::type 680ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto shufflevector(Ty V1, Ty V2) { 681ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto const uint8_t NumElements = 8; 682ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return __builtin_shufflevector( 683ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto V1, V2, Idx0 % (NumElements * 2), Idx1 % (NumElements * 2), 684ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx2 % (NumElements * 2), Idx3 % (NumElements * 2), 685ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx4 % (NumElements * 2), Idx5 % (NumElements * 2), 686ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx6 % (NumElements * 2), Idx7 % (NumElements * 2)); 687ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } 688ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 689ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto //---------------------------------------------------------------------------- 690ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // 691ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // V16??? Shuffles. 692ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto // 693ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto //---------------------------------------------------------------------------- 694ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto template <typename Ty, uint8_t Idx0, uint8_t Idx1, uint8_t Idx2, uint8_t Idx3, 695ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t Idx4, uint8_t Idx5, uint8_t Idx6, uint8_t Idx7, 696ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t Idx8, uint8_t Idx9, uint8_t Idx10, uint8_t Idx11, 697ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint8_t Idx12, uint8_t Idx13, uint8_t Idx14, uint8_t Idx15> 698ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto static typename std::enable_if<Vectors<Ty>::NumElements == 16, Ty>::type 699ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto shufflevector(Ty V1, Ty V2) { 700ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto const uint8_t NumElements = 16; 701ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return __builtin_shufflevector( 702ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto V1, V2, Idx0, Idx1 % (NumElements * 2), Idx2 % (NumElements * 2), 703ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx3 % (NumElements * 2), Idx4 % (NumElements * 2), 704ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx5 % (NumElements * 2), Idx6 % (NumElements * 2), 705ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx7 % (NumElements * 2), Idx8 % (NumElements * 2), 706ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx9 % (NumElements * 2), Idx10 % (NumElements * 2), 707ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx11 % (NumElements * 2), Idx12 % (NumElements * 2), 708ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx13 % (NumElements * 2), Idx14 % (NumElements * 2), 709ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto Idx15 % (NumElements * 2)); 710ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } 711ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 712ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portopublic: 713ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto typedef VecTy (*TestFn)(VecTy V1, VecTy V2); 714ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto static TestFn Tests[]; 715ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto static const uint32_t NumTests; 716ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto}; 717ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 718ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portotemplate <typename Ty> 719ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portotypename ShuffleVectorTest<Ty>::TestFn ShuffleVectorTest<Ty>::Tests[] = { 720ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#define X(...) &ShuffleVectorTest<Ty>::shufflevector<Ty, __VA_ARGS__>, 721ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto SHUFFLETESTS_TABLE 722ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#undef X 723ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto}; 724ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 725ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portotemplate <typename Ty> 726ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portoconst uint32_t ShuffleVectorTest<Ty>::NumTests = 0 727ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#define X(...) +1 728ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto SHUFFLETESTS_TABLE 729ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#undef X 730ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto ; 731ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto} // end of anonymous namespace 732ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 733ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Portoextern "C" { 734ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#define X(Ty, ElmtTy, CastTy) \ 735ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto TY(Ty) shufflevector_##Ty(TY(Ty) V1, TY(Ty) V2, uint32_t Which) { \ 736ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return (*ShuffleVectorTest<TY(Ty)>::Tests[Which])(V1, V2); \ 737ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } \ 738ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint32_t shufflevector_count_##Ty() { \ 739ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return ShuffleVectorTest<TY(Ty)>::NumTests; \ 740ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } 741ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn PortoVECTOR_TYPE_TABLE 742ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#undef X 743ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto 744ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#define X(I1Ty, Ty, numelements) \ 745ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto TY(I1Ty) shufflevector_##I1Ty(TY(I1Ty) V1, TY(I1Ty) V2, uint32_t Which) { \ 746ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return (*ShuffleVectorTest<TY(I1Ty)>::Tests[Which])(V1, V2); \ 747ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } \ 748ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto uint32_t shufflevector_count_##I1Ty() { \ 749ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto return ShuffleVectorTest<TY(I1Ty)>::NumTests; \ 750ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto } 751ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn PortoI1_VECTOR_TYPE_TABLE 752ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto#undef X 753ae15f0fd85df9f13a251222d048761a9aa1dcf2aJohn Porto} // end of extern "C" 754