/* Build with `cc -lm -O2 retro-unix.c -o retro` */ #define BIT64 #define ENABLE_CLOCK #define ENABLE_FILES #define ENABLE_FLOATS #define ENABLE_MALLOC #define ENABLE_MULTICORE #define ENABLE_RNG #define ENABLE_SCRIPTING #define ENABLE_SIGNALS #define ENABLE_UNIX #define ENABLE_UNSIGNED /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifndef MAKEFILE_CONFIG #define ENABLE_FLOATS #define ENABLE_FILES #define ENABLE_UNIX #define ENABLE_RNG #define ENABLE_CLOCK #define ENABLE_SCRIPTING /* #define ENABLE_SOCKETS */ #define ENABLE_SIGNALS #define ENABLE_MULTICORE /* #define ENABLE_FFI */ #define ENABLE_ERROR #define ENABLE_UNSIGNED #define ENABLE_MALLOC #define ENABLE_BLOCKS #define ENABLE_IOCTL #endif #ifdef ENABLE_MULTICORE #define CORES 8 #else #define CORES 1 #endif #if defined(_WIN32) || defined(_WIN64) #define NEEDS_STRL #endif #if defined(__APPLE__) && defined(__MACH__) && defined(NEEDS_STRL) #undef NEEDS_STRL #endif /* Configuration ----------------------------------------------------- */ #ifndef BIT64 #define CELL int32_t #define CELL_MIN INT_MIN + 1 #define CELL_MAX INT_MAX - 1 #else #define CELL int64_t #define CELL_MIN LLONG_MIN + 1 #define CELL_MAX LLONG_MAX - 1 #endif #ifndef IMAGE_SIZE #define IMAGE_SIZE 524288 /* Amount of RAM, in cells */ #endif #ifndef ADDRESSES #define ADDRESSES 256 /* Depth of address stack */ #endif #ifndef STACK_DEPTH #define STACK_DEPTH 256 /* Depth of data stack */ #endif #ifdef BRANCH_PREDICTION /* The Compiler Magic Trick */ #define unlikely(x) __builtin_expect((x),0) #endif #define DEVICE_OUTPUT 0 #define DEVICE_KEYBOARD 1 #define DEVICE_FLOATS 2 #define DEVICE_FILES 4 #define DEVICE_BLOCKS 3 #define DEVICE_CLOCK 5 #define DEVICE_RESERVED6 6 #define DEVICE_SOCKET 7 #define DEVICE_UNIX 8 #define DEVICE_SCRIPTING 9 #define DEVICE_RNG 10 #define DEVICE_RESERVED11 11 #define DEVICE_RESERVED12 12 #define DEVICE_RESERVED13 13 #define DEVICE_IOCTL 14 #define DEVICE_MALLOC 15 #define DEVICE_IMAGE 1000 #define DEVICE_ERROR 1234 #define DEVICE_MULTICORE 8000 #define DEVICE_FFI 8100 #define DEVICE_UNSIGNED 8101 size_t utf32_strlen(const int32_t *utf32_str) { size_t length = 0; while (utf32_str[length] != 0) { length++; } return length; } void utf32_strcpy(int32_t *dest, const int32_t *src) { while ((*dest++ = *src++) != 0); } int utf32_strcmp(const int32_t *str1, const int32_t *str2) { while (*str1 && (*str1 == *str2)) { str1++; str2++; } return *str1 - *str2; } void c_to_utf32(const char *source, int32_t *dest, int max) { int i = 0; while (source[i] != '\0' && i < max - 1) { dest[i] = (int32_t)source[i]; i++; } dest[i] = 0; } void utf32_to_c(const int32_t *source, char *dest, int max) { int i = 0; while (source[i] != 0 && i < max - 1) { if (source[i] <= 0x7F) { dest[i] = (char)source[i]; } else { dest[i] = '?'; } i++; } dest[i] = '\0'; } #define ACTIVE vm->cpu[vm->active] #define TIB vm->memory[7] #define TIB_END vm->memory[8] #define MAX_DEVICES 32 #define MAX_OPEN_FILES 32 #include #ifndef CELL #ifndef BIT64 #define CELL int32_t #define CELL_MIN INT_MIN + 1 #define CELL_MAX INT_MAX - 1 #else #define CELL int64_t #define CELL_MIN LLONG_MIN + 1 #define CELL_MAX LLONG_MAX - 1 #endif #endif CELL ngaImageCells = 69648; CELL ngaImage[] = { 1793,13735,69594,69647,202410,439,411,1601,2048,0,13789,0,10,1,10,2,10,3,10, 4,10,5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10, 16,10,17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234, 1,2575,85000450,1,656912,163,180,268505089,65,64,285281281,0,65,2063,10,101384453,0,9,10,68485378, 255,18350338,8,255,1045,18350338,16,255,1045,352393217,24,255,10,268289,-24,68229121,-16,68229121,-8,2577, 2049,58,25,459011,99,524546,99,302256641,1,10,16974595,0,50529798,10,25,524547,118,50529798,10,17108738, 1,251790353,101777669,1,17565186,109,524545,113,66,167838467,-1,134287105,3,61,659457,3,459023,130,2049,58, 25,2049,130,1793,137,2049,137,117506307,0,130,0,524545,28,135,168820993,0,149,1642241,149,134283523, 13,135,1793,130,524545,2049,130,1793,130,16846593,149,163,180,1793,66,16846593,149,135,180,1793, 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,659713,6,659713,7,659713,8,659713, 9,45,0,1793,68418,17108737,3,2,524559,130,2049,130,2049,130,524545,0,130,524545,0,130, 524545,0,130,524545,200,130,524545,200,130,524545,0,130,2049,144,1048838,2,1642241,10,7,67827, -460132687,167841793,238,11,17826049,0,238,2,15,25,524546,26354,134287105,239,29,2305,240,459023,248,2049, 5994,134287361,239,243,659201,238,10,659969,7,2049,58,25,17694978,58,266,9,84152833,48,319750404,265, 117507601,268,184618754,45,25,16974851,-1,168886532,1,134284289,1,281,134284289,0,268,660227,32,0,0,115, 105,103,105,108,58,105,0,285278479,298,6,2576,524546,104,1641217,1,167838467,295,2049,310,2049, 306,524545,298,258,17826050,297,0,2572,2563,2049,288,1793,156,459023,156,1793,336,17760513,168,3, 202,8,251727617,3,2,2049,182,16,168820993,-1,149,2049,182,2575,2049,258,17563906,0,350,9, 1793,156,285282049,3,2,134287105,149,347,524545,1793,130,16846593,3,0,130,8,659201,3,524545,28, 135,17043201,3,13,2049,135,2049,130,268505092,149,1642241,149,656131,659201,3,524545,13,135,2049,130, 459009,25,135,459009,57,135,459009,21,135,459009,23,135,1793,13036,10,524546,182,134284303,184,1807, 1601,1642241,297,285282049,419,1,459012,414,117509889,238,414,134287105,419,258,16845825,0,427,411,1793,66, 1793,441,17826050,419,316,8,117506305,420,430,66,2116,11340,11700,11400,13685,13104,12432,12402,9603,9801, 11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670,12654,13320,11960,13908,10088,10605,11865,11025, 0,2049,258,987393,1,1793,130,524546,517,2049,515,2049,515,17891588,2,517,8,17045505,-24,-16, 17043736,-8,1118488,1793,130,17043202,1,169021201,2049,58,25,33883396,101450758,6404,459011,507,34668804,2,2049,504, 524545,449,507,302056196,449,659969,1,114,101,116,114,111,46,109,117,114,105,0,0,15, 174,526,193489870,16061,200,200,43371,100,117,112,0,537,17,174,526,2090195226,16052,200,200,43263, 100,114,111,112,0,550,19,174,526,2090739264,16716,200,200,62489,115,119,97,112,0,564, 27,174,526,2090140673,15874,200,200,38399,99,97,108,108,0,578,29,174,526,193490778,16076,200, 200,44155,101,113,63,0,592,31,174,526,2088204551,15329,200,200,28390,45,101,113,63,0, 605,33,174,526,193498500,16213,200,200,53237,108,116,63,0,619,35,174,526,193493055,16141,200, 200,51117,103,116,63,0,632,37,174,526,258875503,16081,200,200,48115,102,101,116,99,104, 0,645,39,174,526,274826578,16707,200,200,62377,115,116,111,114,101,0,660,41,174,526, 177616,15314,200,200,28161,43,0,675,43,174,526,177618,15322,200,200,28280,45,0,686,45, 174,526,177615,15309,200,200,28014,42,0,697,47,174,526,2088285108,15347,200,200,28669,47,109, 111,100,0,708,49,174,526,193486360,15713,200,200,35908,97,110,100,0,722,51,174,526, 5863686,16333,200,200,54699,111,114,0,735,53,174,526,193511454,16846,200,200,67426,120,111,114, 0,747,55,174,526,274388419,16647,200,200,60549,115,104,105,102,116,0,760,405,180,526, 2090629861,16357,15265,200,54944,112,117,115,104,0,775,408,180,526,193502740,16352,15262,200,54817,112, 111,112,0,789,402,180,526,5861552,15353,200,200,28746,48,59,0,802,58,168,526,-1885660229, 16085,200,200,48164,102,101,116,99,104,45,110,101,120,116,0,814,61,168,526,1976567422, 16711,200,200,62419,115,116,111,114,101,45,110,101,120,116,0,834,288,168,526,-2005311157, 16609,200,200,59193,115,58,116,111,45,110,117,109,98,101,114,0,854,118,168,526, 272731271,16482,200,200,56906,115,58,101,113,63,0,875,104,168,526,289838292,16538,200,200,57915, 115,58,108,101,110,103,116,104,0,890,66,168,526,-161057562,15915,200,200,38806,99,104, 111,111,115,101,0,908,76,174,526,5863476,16179,200,200,51884,105,102,0,924,74,168, 526,193429569,15334,200,200,28484,45,105,102,0,936,327,180,526,-1801857825,0,200,200,0,115, 105,103,105,108,58,40,0,949,149,156,526,-1210660288,15485,200,200,30504,67,111,109,112, 105,108,101,114,0,966,3,156,526,2089174371,15502,200,200,31850,72,101,97,112,0,984, 130,168,526,177617,15319,200,200,28201,44,0,998,144,168,526,5863748,16389,200,200,55298,115, 44,0,1009,150,180,526,177632,15363,200,200,28860,59,0,1021,361,180,526,177664,15541,200, 200,32802,91,0,1032,377,180,526,177666,15543,200,200,32821,93,0,1043,2,156,526,1264838491, 15488,200,200,31325,68,105,99,116,105,111,110,97,114,121,0,1054,181,168,526,-176589039, 16011,200,200,42076,100,58,108,105,110,107,0,1074,182,168,526,2090134543,16033,200,200,42867, 100,58,120,116,0,1090,184,168,526,-1543050247,15985,200,200,41429,100,58,99,108,97,115, 115,0,1104,198,168,526,-176525916,16023,200,200,42482,100,58,110,97,109,101,0,1121,168, 168,526,339514705,15936,200,200,39145,99,108,97,115,115,58,119,111,114,100,0,1137,180, 168,526,-1693294713,15930,200,200,39021,99,108,97,115,115,58,109,97,99,114,111,0,1157, 156,168,526,338816719,15920,200,200,38986,99,108,97,115,115,58,100,97,116,97,0,1178, 202,168,526,-2097653054,15980,200,200,41250,100,58,97,100,100,45,104,101,97,100,101,114, 0,1198,328,180,526,-1801857830,16656,200,200,60694,115,105,103,105,108,58,35,0,1220,334, 180,526,-1801857807,16675,200,200,61049,115,105,103,105,108,58,58,0,1237,353,180,526,-1801857827, 16664,200,200,60758,115,105,103,105,108,58,38,0,1254,332,180,526,-1801857829,16660,200,200, 60721,115,105,103,105,108,58,36,0,1271,392,180,526,422440038,16374,200,200,55207,114,101, 112,101,97,116,0,1288,394,180,526,252997285,15708,200,200,35786,97,103,97,105,110,0, 1304,439,168,526,314257922,16193,200,200,52272,105,110,116,101,114,112,114,101,116,0,1319, 258,168,526,975220285,16015,200,200,42126,100,58,108,111,111,107,117,112,0,1338,174,168, 526,1687271822,15933,200,200,39073,99,108,97,115,115,58,112,114,105,109,105,116,105,118, 101,0,1356,4,156,526,-742861781,15538,200,200,32760,86,101,114,115,105,111,110,0,1381, 486,168,526,177678,16176,200,200,51801,105,0,1398,130,168,526,177673,15975,200,200,41116,100, 0,1409,480,168,526,177687,16360,200,200,54998,114,0,1420,265,156,526,2088954976,15482,200,200, 30427,66,97,115,101,0,1431,92,168,526,2090607556,16345,200,200,54773,112,97,99,107,0, 1445,78,168,526,550515207,16763,200,200,64868,117,110,112,97,99,107,0,1459,186,168,526, 1249390676,16029,200,200,42705,100,58,115,111,117,114,99,101,0,1475,188,168,526,-176741337,15995, 200,200,41766,100,58,104,97,115,104,0,1493,190,168,526,-1523788551,15283,200,200,0,100, 58,115,116,97,99,107,0,1509,192,168,526,549642842,15287,200,200,0,100,58,97,115, 116,97,99,107,0,1526,194,168,526,745319807,15291,200,200,0,100,58,102,115,116,97, 99,107,0,1544,196,168,526,-1542096812,15295,200,200,0,100,58,100,101,115,99,114,0, 1562,411,168,526,933914805,16074,200,200,44321,101,114,114,58,110,111,116,102,111,117,110, 100,0,105,109,97,103,101,58,115,97,118,101,0,103,101,0,98,108,101,0, 46,114,101,116,114,111,0,0,111,0,46,95,84,104,105,115,95,119,105,108, 108,95,104,105,100,101,95,97,110,121,95,104,101,97,100,101,114,115,95,98, 101,116,119,101,101,110,95,96,123,123,96,95,97,110,100,95,96,45,45,45, 114,101,118,101,97,108,45,45,45,96,44,95,108,101,97,118,105,110,103,95, 111,110,108,121,95,104,101,97,100,101,114,115,95,98,101,116,119,101,101,110, 95,96,45,45,45,114,101,118,101,97,108,45,45,45,96,95,97,110,100,95, 116,104,101,95,96,125,125,96,95,118,105,115,105,98,108,101,46,0,110,111, 110,45,122,101,114,111,95,118,97,108,117,101,95,97,115,95,96,84,82,85, 69,96,46,0,69,96,46,0,108,108,95,98,101,95,116,104,101,95,114,101, 115,116,95,111,102,95,116,104,101,95,111,114,105,103,105,110,97,108,95,115, 116,114,105,110,103,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,1579,2061,168,16941,193454822,15493,200,200,31485,69,79, 77,0,1,-3,15,10,2048,2080,168,16941,256499866,16041,200,200,43006,100,101,112,116,104, 0,1,-1,15,10,2065,2100,168,16941,-176597577,15999,200,200,41816,100,58,108,97,115,116, 0,1,2,15,10,2084,2123,168,16941,1574593009,16008,200,200,42005,100,58,108,97,115,116, 46,120,116,0,2049,2100,2049,182,15,10,2104,2151,168,16941,-70242661,16002,200,200,41858,100, 58,108,97,115,116,46,99,108,97,115,115,0,2049,2100,2049,184,15,10,2129,2178, 168,16941,1039459334,16005,200,200,41932,100,58,108,97,115,116,46,110,97,109,101,0,2049, 2100,2049,198,10,2157,2200,168,16941,1040454034,16363,200,200,55081,114,101,99,108,97,115,115, 0,2049,2100,2049,184,16,10,2183,2225,168,16941,178274228,16187,200,200,51999,105,109,109,101, 100,105,97,116,101,0,1,180,2049,2200,10,2206,2244,168,16941,2090176863,16037,200,200,42915, 100,97,116,97,0,1,156,2049,2200,10,2230,2268,168,16941,-1234078178,16355,200,200,54871,112, 114,105,109,105,116,105,118,101,0,1,174,2049,2200,10,2249,2287,180,16941,2090335702,16174, 200,200,51701,104,111,111,107,0,1,1793,2049,130,1,3,15,1,1,17,2049,130, 10,2273,2318,168,16941,234850607,16643,200,200,60506,115,101,116,45,104,111,111,107,0,1, 1,17,16,10,2300,2339,168,16941,550243353,16760,200,200,62937,117,110,104,111,111,107,0, 1,1,17,2,1,1,17,4,16,10,2323,2360,180,16941,177613,15305,200,200,27924,40, 0,10,2349,2372,180,16941,177614,15307,200,200,27969,41,0,10,2361,2394,168,16941,-898142575,15948, 200,200,40205,99,111,109,112,105,108,101,58,108,105,116,0,1,1,2049,130,2049, 130,10,2373,2423,168,16941,426007172,15945,200,200,40136,99,111,109,112,105,108,101,58,106, 117,109,112,0,1,1793,2049,130,2049,130,10,2401,2452,168,16941,425733796,15942,200,200,40067, 99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,130,2049,130,10, 2430,2480,168,16941,-898136173,15951,200,200,40281,99,111,109,112,105,108,101,58,114,101,116, 0,1,10,2049,130,10,2459,2505,168,16941,-1979274138,15953,200,200,40339,99,111,109,112,105, 108,105,110,103,63,0,1,149,15,10,2485,2526,180,16941,-1801857769,16688,200,200,61199,115, 105,103,105,108,58,96,0,2049,288,2049,130,10,2509,2548,180,16941,-1801857773,16682,200,200, 61120,115,105,103,105,108,58,92,0,2049,486,10,2531,2568,180,16941,-1801857771,16685,200,200, 61160,115,105,103,105,108,58,94,0,2049,480,10,2551,2585,168,16941,2090324905,16169,200,200, 51634,104,101,114,101,0,1,3,15,10,2571,2606,180,16941,-1801857801,16678,200,200,61090,115, 105,103,105,108,58,64,0,2049,258,2049,182,15,2049,2505,1793,2622,1,3841,2049,130, 2049,130,10,1,2615,1793,2628,15,10,1,2626,2049,66,10,2589,2650,180,16941,-1801857832,16652, 200,200,60663,115,105,103,105,108,58,33,0,2049,258,2049,182,15,2049,2505,1793,2666, 1,4097,2049,130,2049,130,10,1,2659,1793,2672,16,10,1,2670,2049,66,10,2633,2695, 168,16941,626189207,15989,200,200,41480,100,58,99,114,101,97,116,101,0,1793,2697,1,156, 1,0,2049,202,2049,2585,2049,2100,2049,182,16,10,2677,2726,168,16941,277702537,16813,200,200, 66692,118,97,114,45,110,0,2049,2695,2049,130,10,2711,2744,168,16941,193508814,16810,200,200, 66639,118,97,114,0,134284289,0,2726,10,2731,2763,168,16941,255671116,15961,200,200,40448,99,111, 110,115,116,0,2049,2695,2049,2100,2049,182,16,10,2748,2785,174,16941,2090773084,16753,200,200, 62875,116,117,99,107,0,100926722,10,2771,2801,174,16941,2090594561,16338,200,200,54749,111,118,101, 114,0,67502597,10,2787,2816,174,16941,193500364,16320,200,200,54587,110,105,112,0,772,10,2803, 2837,174,16941,288947475,16055,200,200,43299,100,114,111,112,45,112,97,105,114,0,771,10, 2818,2853,174,16941,2088850509,15365,200,200,28888,63,100,117,112,0,6402,10,2839,2873,168,16941, -59285433,16066,200,200,43408,100,117,112,45,112,97,105,114,0,67502597,67502597,10,2855,2889,168, 16941,193489474,16044,200,200,43047,100,105,112,0,525572,6,10,2876,2905,168,16941,193505809,16694,200, 200,61249,115,105,112,0,67502597,1,27,2049,2889,10,2892,2923,168,16941,5863248,15742,200,200, 36400,98,105,0,1,2905,2049,2889,8,10,2911,2942,168,16941,193487226,15748,200,200,36459,98, 105,42,0,1,2889,2049,2889,8,10,2929,2961,168,16941,193487248,15755,200,200,36498,98,105, 64,0,2,2049,2942,10,2948,2978,168,16941,193507188,16730,200,200,62674,116,114,105,0,1793, 2987,1,2905,2049,2889,2049,2905,10,1,2980,2049,2889,8,10,2965,3007,168,16941,2090769950,16737, 200,200,62765,116,114,105,42,0,1793,3024,1793,3017,4,1,2889,2049,2889,10,1,3011, 2049,2889,2049,2889,10,1,3009,2049,2889,8,10,2993,3044,168,16941,2090769972,16746,200,200,62817, 116,114,105,64,0,2,2,2049,3007,10,3030,3064,168,16941,279132286,16839,200,200,67245,119, 104,105,108,101,0,1793,3073,525570,1639430,3,1,3066,7,10,1,3066,8,3,10,3049, 3093,168,16941,276987953,16770,200,200,65680,117,110,116,105,108,0,1793,3104,525570,385942534,-1,25, 3,1,3095,7,10,1,3095,8,3,10,3078,3126,168,16941,-1163346114,16135,200,200,51013,102, 111,114,101,118,101,114,0,1793,3130,8,10,1,3128,2049,2905,1,3126,7,10,3109, 3153,168,16941,275614599,16726,200,200,62619,116,105,109,101,115,0,1793,3165,4,25,33886721,1, 2053,1542,1,3156,7,10,1,3155,8,3,10,3138,3187,180,16941,-1801857741,16691,200,200,61228, 115,105,103,105,108,58,124,0,2049,258,1793,3195,2049,182,15,10,1,3191,1793,3203, 2049,184,15,10,1,3199,2049,2923,2049,2505,1793,3218,1,156,2049,2889,2049,2452,10,1, 3211,1,27,2049,66,10,3170,3239,168,16941,2089584485,15529,200,200,32597,84,82,85,69,0, 1,-1,10,3225,3257,168,16941,219588176,15496,200,200,31540,70,65,76,83,69,0,1,0, 10,3242,3274,168,16941,2090140897,15889,200,200,38529,99,97,115,101,0,1793,3279,67502597,11,10, 1,3276,2049,2889,4,1793,3291,772,8,2049,3239,10,1,3286,1793,3299,3,2049,3257,10, 1,3295,2049,66,25,6,3,3,10,3260,3324,168,16941,410109870,16420,200,200,55923,115,58, 99,97,115,101,0,1793,3330,67502597,2049,118,10,1,3326,2049,2889,4,1793,3342,772,8, 2049,3239,10,1,3337,1793,3350,3,2049,3257,10,1,3346,2049,66,25,6,3,3,10, 3308,3372,168,16941,193500566,16327,200,200,54645,110,111,116,0,1,-1,23,10,3359,3391,168, 16941,266514170,16218,200,200,53315,108,116,101,113,63,0,2049,2873,101516555,22,10,3376,3411,168, 16941,260584565,16146,200,200,51198,103,116,101,113,63,0,4,2049,3391,10,3396,3430,168,16941, 266773971,16232,200,200,53508,110,58,77,65,88,0,1,-5,15,10,3415,3449,168,16941,266774225, 16235,200,200,53558,110,58,77,73,78,0,1,-4,15,10,3434,3470,168,16941,-1486229492,16316, 200,200,54532,110,58,122,101,114,111,63,0,1,0,11,10,3453,3492,168,16941,-494948871, 16228,200,200,53449,110,58,45,122,101,114,111,63,0,1,0,12,10,3474,3517,168, 16941,1249353375,16280,200,200,54077,110,58,110,101,103,97,116,105,118,101,63,0,1,0, 13,10,3496,3542,168,16941,476508031,16288,200,200,54184,110,58,112,111,115,105,116,105,118, 101,63,0,1,-1,14,10,3521,3576,168,16941,-1782398742,16308,200,200,54379,110,58,115,116, 114,105,99,116,108,121,45,112,111,115,105,116,105,118,101,63,0,1,0,14, 10,3546,3597,168,16941,-1510537094,16252,200,200,53791,110,58,101,118,101,110,63,0,1,2, 20,3,2049,3470,10,3580,3620,168,16941,214866883,16284,200,200,54133,110,58,111,100,100,63, 0,2049,3597,2049,3372,10,3604,3638,168,16941,193494767,16183,200,200,51925,105,102,59,0,67502597, 1,76,2049,2889,25,6,771,10,3625,3661,168,16941,2088208540,15338,200,200,28530,45,105,102, 59,0,67502597,1,74,2049,2889,2049,3372,25,6,771,10,3647,3685,174,16941,193504922,16381,200, 200,55269,114,111,116,0,67503109,10,3672,3698,174,16941,177620,15342,200,200,28606,47,0,197652, 10,3687,3713,174,16941,193499461,16223,200,200,53405,109,111,100,0,788,10,3700,3730,168,16941, 266813635,16292,200,200,54240,110,58,112,111,119,0,1,1,4,1793,3738,67502597,19,10,1, 3735,2049,3153,772,10,3715,3762,168,16941,2024000897,16276,200,200,54048,110,58,110,101,103,97, 116,101,0,1,-1,19,10,3744,3784,168,16941,-2060555330,16304,200,200,54348,110,58,115,113, 117,97,114,101,0,4866,10,3766,3802,168,16941,215025303,16300,200,200,54312,110,58,115,113, 114,116,0,1,1,1793,3820,2049,2873,197652,67502597,18,1,2,197652,25,17,1,3806,7, 10,1,3806,8,772,10,3786,3840,168,16941,266810161,16271,200,200,54015,110,58,109,105,110, 0,2049,2873,13,1793,3847,3,10,1,3845,1793,3853,772,10,1,3851,2049,66,10,3825, 3873,168,16941,266809907,16266,200,200,53981,110,58,109,97,120,0,2049,2873,14,1793,3880,3, 10,1,3878,1793,3886,772,10,1,3884,2049,66,10,3858,3906,168,16941,266796867,16238,200,200, 53608,110,58,97,98,115,0,2,2049,3517,1,3762,9,10,3891,3930,168,16941,-1502694228,16260, 200,200,53863,110,58,108,105,109,105,116,0,4,5,2049,3840,6,2049,3873,10,3913, 3953,168,16941,266805959,16256,200,200,53843,110,58,105,110,99,0,659713,1,10,3938,3971,168, 16941,266800217,16248,200,200,53771,110,58,100,101,99,0,659969,1,10,3956,3994,168,16941,1032861494, 16242,200,200,53647,110,58,98,101,116,119,101,101,110,63,0,67503109,1793,4002,67503109,67503109, 2049,3930,10,1,3997,2049,2905,11,10,3974,4027,168,16941,-2130983749,15523,200,200,32482,83,99, 111,112,101,76,105,115,116,0,69179,69328,10,4008,4042,168,16941,5864091,16853,200,200,67578, 123,123,0,2049,2100,2,1,4027,2049,61,16,10,4030,4073,168,16941,-1644352334,15327,200,200, 28327,45,45,45,114,101,118,101,97,108,45,45,45,0,2049,2100,1,4027,2049,3953, 16,10,4051,4093,168,16941,5864159,16858,200,200,67672,125,125,0,1,4027,2049,58,4,15, 11,1793,4107,3841,4027,4097,2,10,1,4102,1793,4133,3841,4027,1793,4128,1,2,983567,1, 4027,2049,3953,1641487,3,1,4117,7,10,1,4115,8,16,10,1,4111,2049,66,10,4081, 4152,168,0,0,0,200,200,0,66,121,116,101,0,10,4138,4172,168,0,0,0, 200,200,0,98,121,116,101,45,109,97,115,107,0,1,255,4,1,8,19,2, 1793,4186,2049,3762,24,21,10,1,4181,2049,2889,24,10,4153,4209,168,0,0,0,200, 200,0,114,101,112,108,97,99,101,0,1,0,1793,4238,1793,4233,1793,4228,1793,4223, 3,3841,4152,10,1,4219,2049,2889,10,1,4217,2049,2889,10,1,4215,2049,2889,10,1, 4213,2049,3274,1,1,1793,4264,1793,4259,1793,4254,3,3841,4152,10,1,4250,2049,2889,10, 1,4248,2049,2889,10,1,4246,2049,3274,1,2,1793,4283,1793,4278,3,3841,4152,10,1, 4274,2049,2889,10,1,4272,2049,3274,1,3,1793,4295,3,3841,4152,10,1,4291,2049,3274, 3,10,4081,4328,168,16941,1181794872,15736,200,200,36314,98,58,116,111,45,98,121,116,101, 45,97,100,100,114,101,115,115,0,4865,4,10,4301,4348,168,16941,172307467,15718,200,200, 35973,98,58,102,101,116,99,104,0,267265,4,134288385,4,3685,266001,2049,4172,10,4331,4374, 168,16941,188258542,15727,200,200,36156,98,58,115,116,111,114,101,0,1048836,4152,267265,4,1793, 4383,134287106,78,10,1,4380,2049,2889,2049,4209,2049,92,4,16,10,4357,4411,168,16941,-668819311, 16151,200,200,51291,104,58,102,101,116,99,104,0,1,4348,1793,4423,2049,3953,2049,4348, 1,-8,24,10,1,4415,2049,2923,22,10,4394,4446,168,16941,-652868236,16160,200,200,51475,104, 58,115,116,111,114,101,0,2049,2873,102039813,255,2049,4374,2049,3953,18350341,8,255,117507605,4374, 10,4429,4477,168,16941,1523331040,16821,200,200,66796,119,58,102,101,116,99,104,0,1,4, 197652,15,10,4460,4499,168,16941,1539282115,16830,200,200,67033,119,58,115,116,111,114,101,0, 1,4,197652,16,10,4482,4526,168,16941,-1431209524,16825,200,200,66944,119,58,102,101,116,99, 104,45,110,101,120,116,0,2,1,4,17,4,2049,4477,10,4504,4556,168,16941,-865140451, 16155,200,200,51386,104,58,102,101,116,99,104,45,110,101,120,116,0,2,1,2, 17,4,2049,4411,10,4534,4586,168,16941,-1497706281,15722,200,200,36067,98,58,102,101,116,99, 104,45,110,101,120,116,0,2,1,1,17,4,2049,4348,10,4564,4616,168,16941,-1863949169, 16834,200,200,67175,119,58,115,116,111,114,101,45,110,101,120,116,0,2,1,4, 17,1,4499,2049,2889,10,4594,4647,168,16941,-1297880096,16164,200,200,51564,104,58,115,116,111, 114,101,45,110,101,120,116,0,2,1,2,17,1,4446,2049,2889,10,4625,4678,168, 16941,-1930445926,15731,200,200,36244,98,58,115,116,111,114,101,45,110,101,120,116,0,2, 1,1,17,1,4374,2049,2889,10,4656,4705,168,16941,-811043593,16787,200,200,66057,118,58,105, 110,99,45,98,121,0,286196994,659462,10,4687,4726,168,16941,-1017393847,16780,200,200,65923,118,58, 100,101,99,45,98,121,0,68093186,168822290,10,4708,4744,168,16941,276293327,16784,200,200,65999,118, 58,105,110,99,0,1,1,4,2049,4705,10,4729,4765,168,16941,276287585,16777,200,200,65865, 118,58,100,101,99,0,1,1,4,2049,4726,10,4750,4788,168,16941,239114932,16791,200,200, 66133,118,58,108,105,109,105,116,0,251790597,1542,2049,3930,4100,10,4771,4808,168,16941,2090781106, 16799,200,200,66329,118,58,111,110,0,2049,3239,4100,10,4794,4827,168,16941,276299600,16796,200, 200,66308,118,58,111,102,102,0,2049,3257,4100,10,4812,4846,168,16941,253189153,15710,200,200, 35852,97,108,108,111,116,0,1,3,2049,4705,10,4831,4871,168,16941,250474337,16802,200,200, 66351,118,58,112,114,101,115,101,114,118,101,0,84869636,1,27,2049,2889,1049606,10,4851, 4896,168,16941,-338953896,16806,200,200,66482,118,58,117,112,100,97,116,101,0,4,1793,4903, 15,4,8,10,1,4899,2049,2905,16,10,4878,4923,168,16941,2090156064,15965,200,200,40497,99, 111,112,121,0,1793,4932,285278725,1,33951492,268767489,1,6,10,1,4925,2049,3153,771,10,4909, 4953,156,0,0,0,200,200,0,115,116,97,114,116,0,0,10,4938,4968,156,0, 0,0,200,200,0,101,110,100,0,0,10,4955,4989,168,0,0,0,200,200,0, 116,101,114,109,105,110,97,116,101,0,1,0,3841,4968,16,10,4909,5017,168,16941, 470531271,15783,200,200,37109,98,117,102,102,101,114,58,115,116,97,114,116,0,3841,4953, 10,4995,5040,168,16941,-1068395248,15768,200,200,36838,98,117,102,102,101,114,58,101,110,100, 0,3841,4968,10,5020,5063,168,16941,-1068399934,15763,200,200,36756,98,117,102,102,101,114,58, 97,100,100,0,3841,4968,16,1,4968,2049,4744,2049,4989,10,5043,5093,168,16941,-1068393351,15771, 200,200,36896,98,117,102,102,101,114,58,103,101,116,0,1,4968,2049,4765,3841,4968, 15,2049,4989,10,5073,5125,168,16941,453693224,15766,200,200,36794,98,117,102,102,101,114,58, 101,109,112,116,121,0,3841,4953,4097,4968,2049,4989,10,5103,5153,168,16941,-896806316,15780,200, 200,37067,98,117,102,102,101,114,58,115,105,122,101,0,3841,4968,3841,4953,18,10, 5132,5179,168,16941,-1068380283,15777,200,200,37027,98,117,102,102,101,114,58,115,101,116,0, 4097,4953,2049,5125,10,5159,5209,168,16941,-1235887835,15774,200,200,36943,98,117,102,102,101,114, 58,112,114,101,115,101,114,118,101,0,3841,4953,3841,4968,1793,5222,1,27,2049,2889, 4097,4953,10,1,5215,2049,2889,4097,4968,10,5184,5250,156,16941,1204567429,15535,200,200,32711,84, 101,109,112,83,116,114,105,110,103,115,0,32,5229,5274,156,16941,1808866840,15532,200,200, 32653,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,5251,5292,168,16941, -1027089649,15520,200,200,32339,83,84,82,73,78,71,83,0,2049,2061,3841,5250,3841,5274,19, 18,10,5275,5322,168,0,-1748767096,15276,200,200,0,115,58,111,118,101,114,115,105,122, 101,63,0,2049,104,3841,5274,2049,3971,14,10,5301,5350,168,0,-657703496,15272,200,200,0, 115,58,116,114,117,110,99,97,116,101,0,2,2049,5322,1793,5363,1,0,67502597,3841, 5274,17,16,10,1,5355,9,10,5330,5384,156,0,0,0,200,200,0,67,117,114, 114,101,110,116,0,15,10,5367,5405,168,0,0,0,200,200,0,115,58,112,111, 105,110,116,101,114,0,3841,5384,3841,5274,19,2049,5292,17,10,5386,5430,168,0,0, 0,200,200,0,115,58,110,101,120,116,0,1,5384,2049,4744,3841,5384,3841,5250,11, 1793,5446,1,0,4097,5384,10,1,5441,9,10,5330,5466,168,16941,410724968,16601,200,200,59022, 115,58,116,101,109,112,0,2049,5350,2,2049,104,2049,3953,2049,5405,4,2049,4923,2049, 5405,2049,5430,10,5450,5500,168,16941,651524257,16474,200,200,56827,115,58,101,109,112,116,121, 0,2049,5405,2049,5430,1,0,67502597,16,10,5483,5525,168,16941,410695433,16576,200,200,58468,115, 58,115,107,105,112,0,6,1793,5533,68223234,1,786703,0,10,1,5528,2049,3064,2049,3971, 5,10,5509,5557,168,16941,410401271,16529,200,200,57765,115,58,107,101,101,112,0,2049,2505, 1793,5566,1,5525,2049,2452,10,1,5561,9,2049,2585,1,144,2049,2889,2049,156,10,5541, 5595,180,0,-1801857826,0,200,200,0,115,105,103,105,108,58,39,0,2049,2505,1,5557, 1,5466,2049,66,10,5578,5621,168,16941,652426460,16491,200,200,57043,115,58,102,101,116,99, 104,0,17,15,10,5604,5641,168,16941,668377535,16590,200,200,58828,115,58,115,116,111,114, 101,0,17,16,10,5624,5660,168,16941,410117372,16434,200,200,56072,115,58,99,104,111,112, 0,2049,5466,2,2049,104,67502597,17,2049,3971,1,0,4,16,10,5644,5693,168,16941,143016046, 16567,200,200,58316,115,58,114,101,118,101,114,115,101,0,1793,5735,2,2049,5466,2049, 5179,1,104,1793,5711,2,2049,104,17,2049,3971,10,1,5704,2049,2923,4,1793,5725,2, 15,2049,5063,2049,3971,10,1,5718,2049,3153,3,2049,5017,2049,5466,10,1,5695,2049,5209, 10,5674,5759,168,16941,-1950939456,16547,200,200,58154,115,58,112,114,101,112,101,110,100,0, 2049,5466,1793,5802,2049,2873,1,104,2049,2961,17,3841,5274,14,1,2837,1793,5797,2,2049, 104,17,1793,5789,2,2049,104,2049,3953,10,1,5783,2049,2889,4,2049,4923,10,1,5777, 2049,66,10,1,5763,2049,2905,10,5740,5825,168,16941,-127536406,16410,200,200,55813,115,58,97, 112,112,101,110,100,0,4,2049,5759,10,5807,5849,168,16941,-89307369,16501,200,200,57272,115, 58,102,111,114,45,101,97,99,104,0,1793,5864,67502597,6415,3,67502597,67502597,251987205,2054,101777670, 1,1,5851,7,10,1,5851,8,771,10,5829,5891,168,16941,111909079,16519,200,200,57562,115, 58,105,110,100,101,120,47,99,104,97,114,0,4,1793,5914,2049,58,25,4,1793, 5903,67502597,12,10,1,5900,2049,2889,4,25,3,1,5894,7,10,1,5894,1793,5923,18, 2049,3971,772,10,1,5918,1793,5932,2049,104,67502597,11,10,1,5927,2049,2978,1793,5942,3, 1,-1,10,1,5938,9,10,5869,5972,168,16941,-552286499,16442,200,200,56246,115,58,99,111, 110,116,97,105,110,115,47,99,104,97,114,63,0,2049,5891,1,-1,12,10,5946, 5994,168,16941,410289558,16515,200,200,57495,115,58,104,97,115,104,0,1,5381,4,1793,6002, 286458116,33,10,1,5999,2049,5849,10,5978,6020,156,0,0,0,200,200,0,83,116,114, 0,0,6007,6038,168,0,0,0,200,200,0,101,120,116,114,97,99,116,0,2049, 2873,3841,6020,4,2049,4923,3841,6020,67502597,17,1,0,4,16,10,6021,6069,168,0,0, 0,200,200,0,99,104,101,99,107,0,1,6038,2049,2889,1793,6080,1,3953,2049,2889, 10,1,6075,2049,2889,3841,6020,2049,5994,67502597,11,10,6054,6109,168,0,0,0,200,200, 0,108,111,99,97,116,105,111,110,0,67503109,67503109,1793,6142,1793,6137,4,1793,6123,67502597, 2049,3470,21,10,1,6118,2049,2889,4,1793,6133,772,2,10,1,6130,9,10,1,6115, 2049,2889,10,1,6113,2049,2889,10,6091,6162,168,0,0,0,200,200,0,115,101,116, 117,112,0,2049,5500,4097,6020,1,0,67503109,67503109,1,104,1,5994,2049,2923,1793,6182,67502597, 2049,104,10,1,6178,2049,2889,4,10,5978,6212,168,16941,-2044062352,16524,200,200,57646,115,58, 105,110,100,101,120,47,115,116,114,105,110,103,0,67502597,1793,6231,2049,6162,1793,6224, 2049,6069,2049,6109,10,1,6219,2049,3153,771,3,10,1,6215,2049,2889,18,1,2,18, 1,-1,2049,3873,10,6188,6257,156,0,0,0,200,200,0,83,114,99,0,0,6244, 6271,156,0,0,0,200,200,0,84,97,114,0,0,6258,6285,156,0,0,0,200, 200,0,80,97,100,0,0,6272,6297,156,0,0,0,200,200,0,73,0,0,6286, 6309,156,0,0,0,200,200,0,70,0,0,6298,6322,156,0,0,0,200,200,0, 65,116,0,0,6310,6342,168,0,0,0,200,200,0,116,101,114,109,105,110,97, 116,101,0,1,0,3841,6285,3841,6271,2049,104,17,16,10,6323,6370,168,0,0,0, 200,200,0,101,120,116,114,97,99,116,0,3841,6257,3841,6297,17,3841,6285,3841,6271, 2049,104,2049,4923,10,6353,6401,168,0,0,0,200,200,0,99,111,109,112,97,114, 101,0,3841,6285,3841,6271,2049,118,3841,6309,22,4097,6309,3841,6309,1793,6421,3841,6297,4097, 6322,10,1,6416,2049,74,10,6384,6440,168,0,0,0,200,200,0,110,101,120,116, 0,1,6297,2049,4744,10,6188,6473,168,16941,-466408362,16447,200,200,56324,115,58,99,111,110, 116,97,105,110,115,47,115,116,114,105,110,103,63,0,4097,6271,4097,6257,2049,5500, 4097,6285,1,0,4097,6297,1,0,4097,6309,3841,6257,2049,104,1793,6504,2049,6370,2049,6342, 2049,6401,2049,6440,10,1,6495,2049,3153,3841,6309,10,6445,6529,168,16941,59711416,16496,200,200, 57114,115,58,102,105,108,116,101,114,0,67502597,2049,5322,1793,6539,1,5350,2049,2889,10, 1,6534,9,1793,6570,2049,5500,2049,5179,4,1793,6562,2049,2873,4,8,1,5063,1,17, 2049,66,10,1,6551,2049,5849,3,2049,5017,10,1,6544,2049,5209,10,6511,6590,168,16941, 272739504,16542,200,200,57991,115,58,109,97,112,0,1793,6612,2049,5500,2049,5179,4,1793,6604, 67502597,8,2049,5063,10,1,6599,2049,5849,3,2049,5017,10,1,6592,2049,5209,10,6575,6635, 168,16941,582342613,16595,200,200,58892,115,58,115,117,98,115,116,114,0,1793,6641,17,2049, 5500,10,1,6637,2049,2889,1793,6653,67502597,1,4923,2049,2889,10,1,6647,2049,2905,67502597,1793, 6666,17,1,0,4,16,10,1,6660,2049,2889,10,6617,6688,168,16941,666787280,16571,200,200, 58367,115,58,114,105,103,104,116,0,67502597,2049,104,67502597,18,4,2049,6635,10,6671,6713, 168,16941,410437245,16533,200,200,57835,115,58,108,101,102,116,0,1,0,4,2049,6635,10, 6697,6743,168,16941,-232792494,16415,200,200,55866,115,58,98,101,103,105,110,115,45,119,105, 116,104,63,0,2,2049,104,1,19,2049,2889,2049,6713,2049,118,10,6719,6777,168,16941, -2108153340,16477,200,200,56851,115,58,101,110,100,115,45,119,105,116,104,63,0,2,2049, 104,1,19,2049,2889,2049,6688,2049,118,10,6755,6805,168,16941,410125037,16452,200,200,56412,115, 58,99,111,112,121,0,67502597,2049,104,2049,3953,2049,4923,10,6789,6831,168,16941,-1310218506,16401, 200,200,55609,115,58,68,73,71,73,84,83,0,2049,5525,48,49,50,51,52,53, 54,55,56,57,65,66,67,68,69,70,0,1,6833,10,6813,6880,168,16941,-1545673491,16395, 200,200,55487,115,58,65,83,67,73,73,45,76,79,87,69,82,67,65,83,69, 0,2049,5525,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113, 114,115,116,117,118,119,120,121,122,0,1,6882,10,6853,6939,168,16941,-1918301808,16398,200, 200,55548,115,58,65,83,67,73,73,45,85,80,80,69,82,67,65,83,69,0, 2049,5525,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82, 83,84,85,86,87,88,89,90,0,1,6941,10,6912,6996,168,16941,-1283195573,16392,200,200, 55416,115,58,65,83,67,73,73,45,76,69,84,84,69,82,83,0,2049,5525,97, 98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117, 118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,0,1,6998,10,6971,7077,168,16941,-1868975636, 16404,200,200,55679,115,58,80,85,78,67,84,85,65,84,73,79,78,0,2049,5525, 95,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,58,59,60,61, 62,63,64,91,92,93,94,96,123,124,125,126,0,1,7079,1,95,67502597,16,10, 7054,7141,156,16941,-143759681,16407,200,200,55746,115,58,87,72,73,84,69,83,80,65,67, 69,0,32,9,10,13,0,7119,7157,180,16941,177612,15302,200,200,27900,39,0,1,5500, 2049,168,10,7146,7173,180,16941,177609,15299,200,200,27878,36,0,1,0,2049,156,10,7162, 0,156,16941,-199368937,15446,200,200,29894,65,83,67,73,73,58,78,85,76,0,7178,27, 156,16941,-199378813,15419,200,200,29525,65,83,67,73,73,58,69,83,67,0,7197,8,156, 16941,254259165,15383,200,200,29033,65,83,67,73,73,58,66,83,0,7216,9,156,16941,254259364, 15437,200,200,29771,65,83,67,73,73,58,72,84,0,7234,10,156,16941,254259482,15440,200, 200,29812,65,83,67,73,73,58,76,70,0,7252,11,156,16941,254259826,15476,200,200,30304, 65,83,67,73,73,58,86,84,0,7270,12,156,16941,254259284,15428,200,200,29648,65,83, 67,73,73,58,70,70,0,7288,13,156,16941,254259197,15389,200,200,29115,65,83,67,73, 73,58,67,82,0,7306,32,156,16941,1936299924,15461,200,200,30099,65,83,67,73,73,58, 83,80,65,67,69,0,7324,127,156,16941,-199380355,15404,200,200,29320,65,83,67,73,73, 58,68,69,76,0,7345,1,156,16941,-199363694,15458,200,200,30058,65,83,67,73,73,58, 83,79,72,0,7364,2,156,16941,-199363513,15464,200,200,30140,65,83,67,73,73,58,83, 84,88,0,7383,3,156,16941,-199378759,15425,200,200,29607,65,83,67,73,73,58,69,84, 88,0,7402,4,156,16941,-199378928,15416,200,200,29484,65,83,67,73,73,58,69,79,84, 0,7421,5,156,16941,-199378964,15413,200,200,29443,65,83,67,73,73,58,69,78,81,0, 7440,6,156,16941,-199383689,15377,200,200,28951,65,83,67,73,73,58,65,67,75,0,7459, 7,156,16941,-199382533,15380,200,200,28992,65,83,67,73,73,58,66,69,76,0,7478,14, 156,16941,254259722,15455,200,200,30017,65,83,67,73,73,58,83,79,0,7497,15,156,16941, 254259716,15452,200,200,29976,65,83,67,73,73,58,83,73,0,7515,16,156,16941,-199380131,15407, 200,200,29361,65,83,67,73,73,58,68,76,69,0,7533,17,156,16941,-199380448,15392,200, 200,29156,65,83,67,73,73,58,68,67,49,0,7552,18,156,16941,-199380447,15395,200,200, 29197,65,83,67,73,73,58,68,67,50,0,7571,19,156,16941,-199380446,15398,200,200,29238, 65,83,67,73,73,58,68,67,51,0,7590,20,156,16941,-199380445,15401,200,200,29279,65, 83,67,73,73,58,68,67,52,0,7609,21,156,16941,-199369598,15443,200,200,29853,65,83, 67,73,73,58,78,65,75,0,7628,22,156,16941,-199363358,15470,200,200,30222,65,83,67, 73,73,58,83,89,78,0,7647,23,156,16941,-199378781,15422,200,200,29566,65,83,67,73, 73,58,69,84,66,0,7666,24,156,16941,-199381574,15386,200,200,29074,65,83,67,73,73, 58,67,65,78,0,7685,25,156,16941,254259258,15410,200,200,29402,65,83,67,73,73,58, 69,77,0,7704,26,156,16941,-199363502,15467,200,200,30181,65,83,67,73,73,58,83,85, 66,0,7722,28,156,16941,254259297,15431,200,200,29689,65,83,67,73,73,58,70,83,0, 7741,29,156,16941,254259330,15434,200,200,29730,65,83,67,73,73,58,71,83,0,7759,30, 156,16941,254259693,15449,200,200,29935,65,83,67,73,73,58,82,83,0,7777,31,156,16941, 254259792,15473,200,200,30263,65,83,67,73,73,58,85,83,0,7795,7835,168,16941,-157167450,15831, 200,200,37833,99,58,108,111,119,101,114,99,97,115,101,63,0,1,97,1,122, 2049,3994,10,7813,7864,168,16941,430999977,15858,200,200,38167,99,58,117,112,112,101,114,99, 97,115,101,63,0,1,65,1,90,2049,3994,10,7842,7890,168,16941,-221932303,15827,200,200, 37769,99,58,108,101,116,116,101,114,63,0,1,7835,1,7864,2049,2923,22,10,7871, 7916,168,16941,985961842,15820,200,200,37671,99,58,100,105,103,105,116,63,0,1,48,1, 57,2049,3994,10,7898,7943,168,16941,-1227520209,15862,200,200,38225,99,58,118,105,115,105,98, 108,101,63,0,1,32,1,126,2049,3994,10,7923,7968,168,16941,1698084814,15866,200,200,38283, 99,58,118,111,119,101,108,63,0,2049,5525,97,101,105,111,117,65,69,73,79, 85,0,1,7970,4,2049,5972,10,7950,8009,168,16941,-1284960908,15816,200,200,37611,99,58,99, 111,110,115,111,110,97,110,116,63,0,2,2049,7890,1793,8019,2049,7968,2049,3372,10, 1,8014,1793,8027,3,2049,3257,10,1,8023,2049,66,10,7987,8055,168,16941,540935182,15870,200, 200,38339,99,58,119,104,105,116,101,115,112,97,99,101,63,0,1,7141,4,2049, 5972,10,8032,8084,168,16941,537650515,15796,200,200,37301,99,58,45,108,111,119,101,114,99, 97,115,101,63,0,2049,7835,2049,3372,10,8061,8112,168,16941,1125817942,15800,200,200,37363,99, 58,45,117,112,112,101,114,99,97,115,101,63,0,2049,7864,2049,3372,10,8089,8136, 168,16941,-32679009,15792,200,200,37233,99,58,45,100,105,103,105,116,63,0,2049,7916,2049, 3372,10,8117,8165,168,16941,1995091547,15812,200,200,37547,99,58,45,119,104,105,116,101,115, 112,97,99,101,63,0,2049,8055,2049,3372,10,8141,8191,168,16941,1869122716,15804,200,200,37425, 99,58,45,118,105,115,105,98,108,101,63,0,2049,7943,2049,3372,10,8170,8215,168, 16941,679443963,15808,200,200,37487,99,58,45,118,111,119,101,108,63,0,2049,7968,2049,3372, 10,8196,8243,168,16941,-590142943,15788,200,200,37169,99,58,45,99,111,110,115,111,110,97, 110,116,63,0,2049,8009,2049,3372,10,8220,8268,168,16941,164041342,15850,200,200,38075,99,58, 116,111,45,117,112,112,101,114,0,2,2049,7835,25,3,1,32,18,10,8248,8297, 168,16941,153339739,15838,200,200,37929,99,58,116,111,45,108,111,119,101,114,0,2,2049, 7864,25,3,1,32,17,10,8277,8327,168,16941,1044946089,15846,200,200,38042,99,58,116,111, 45,115,116,114,105,110,103,0,2049,5525,46,0,1,8329,2049,5466,1,39,2049,2905, 10,8306,8363,168,16941,-1181400147,15854,200,200,38118,99,58,116,111,103,103,108,101,45,99, 97,115,101,0,2,2049,7835,1,8268,1,8297,2049,66,10,8340,8394,168,16941,850267451,15842, 200,200,37972,99,58,116,111,45,110,117,109,98,101,114,0,2,2049,7916,1793,8403, 1,48,18,10,1,8399,1793,8411,3,1,0,10,1,8407,2049,66,10,8373,8436,168, 16941,1248863374,16613,200,200,59223,115,58,116,111,45,117,112,112,101,114,0,1,8268,2049, 6590,10,8416,8461,168,16941,1238161771,16605,200,200,59132,115,58,116,111,45,108,111,119,101, 114,0,1,8297,2049,6590,10,8441,8487,168,16941,1350078662,16631,200,200,59642,115,58,116,114, 105,109,45,108,101,102,116,0,2049,5466,1793,8501,2049,58,1,8055,1,3492,2049,2923, 21,10,1,8491,2049,3064,2049,3971,10,8466,8530,168,16941,1610182969,16635,200,200,59681,115,58, 116,114,105,109,45,114,105,103,104,116,0,2049,5466,2049,5693,2049,8487,2049,5693,10, 8508,8555,168,16941,410738990,16627,200,200,59590,115,58,116,114,105,109,0,2049,8530,2049,8487, 10,8539,8588,156,16941,-1636174316,15517,200,200,32224,82,101,119,114,105,116,101,85,110,100, 101,114,115,99,111,114,101,115,0,-1,8560,8602,168,0,0,0,200,200,0,115, 117,98,0,1,95,1793,8609,1,32,10,1,8606,2049,3274,10,8589,8631,168,0,0, 0,200,200,0,114,101,119,114,105,116,101,0,3841,8588,1793,8640,1,8602,2049,6590, 10,1,8635,9,10,8614,8660,168,0,0,0,200,200,0,104,97,110,100,108,101, 0,1,5595,8,10,8560,8681,180,16941,-1801857826,16668,200,200,60825,115,105,103,105,108,58, 39,0,2049,8631,2049,8660,10,8664,8708,168,16941,-1531896405,16578,200,200,58537,115,58,115,112, 108,105,116,47,99,104,97,114,0,2049,2873,2049,5891,772,2049,2873,2049,6713,1,41, 2049,2889,10,8686,8746,168,16941,-1146871996,16584,200,200,58604,115,58,115,112,108,105,116,47, 115,116,114,105,110,103,0,2049,2873,2049,6212,2049,3953,772,2049,2873,2049,6713,1,41, 2049,2889,10,8722,8781,168,16941,136133038,16555,200,200,58225,115,58,114,101,112,108,97,99, 101,0,67502597,2049,104,2049,2585,16,1793,8797,2049,8746,4,2049,2585,15,17,10,1,8789, 2049,2889,2049,5759,2049,5825,10,8762,8824,156,0,0,0,200,200,0,83,112,108,105, 116,45,79,110,0,0,8806,8841,168,0,0,0,200,200,0,109,97,116,99,104, 63,0,3841,8824,11,10,8825,8864,168,0,0,0,200,200,0,116,101,114,109,105, 110,97,116,101,0,1,0,67502597,2049,3971,16,10,8845,8885,168,0,0,0,200,200, 0,115,116,101,112,0,1,3953,2049,2889,2049,8841,1793,8899,2,2049,130,2049,8864,10, 1,8893,9,10,8762,8923,168,16941,-638763109,16617,200,200,59284,115,58,116,111,107,101,110, 105,122,101,0,4097,8824,2049,5557,2049,2585,1,0,2049,130,1793,8945,2,2049,130,2, 1,8885,2049,5849,3,10,1,8935,2049,2889,2049,2585,67502597,18,2049,3971,67502597,16,10,8903, 8974,156,0,0,0,200,200,0,78,101,101,100,108,101,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,8958,9115,156,0,0,0,200,200,0,76,101,110,0,0,9102,9132,156, 0,0,0,200,200,0,84,111,107,101,110,115,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,9116,9272,156,0,0,0,200,200,0,84,80,0,0,9260,9287,168,0,0,0, 200,200,0,115,97,118,101,0,2049,5557,3841,9272,1,9132,17,2049,3953,16,1,9272, 2049,4744,10,9273,9316,168,0,0,0,200,200,0,110,101,120,116,0,1793,9322,3841, 9115,17,10,1,9318,2049,2905,10,9302,9342,168,0,0,0,200,200,0,100,111,110, 101,63,0,2049,104,2049,3470,10,8903,9377,168,16941,-826994327,16622,200,200,59433,115,58,116, 111,107,101,110,105,122,101,45,111,110,45,115,116,114,105,110,103,0,1,0, 4097,9272,1793,9391,2,1,8974,2049,6805,2049,5825,10,1,9383,1793,9400,2049,104,4097,9115, 10,1,9395,2049,2923,1793,9417,1,8974,2049,8746,2049,9287,2049,9316,2049,9342,10,1,9406, 2049,3093,1,9132,3841,9272,2049,3971,4097,9132,772,10,9347,9447,156,0,0,0,200,200, 0,83,116,114,105,110,103,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9431,9533,168,0,0,0, 200,200,0,99,104,101,99,107,45,115,105,103,110,0,2049,3517,1793,9542,1,45, 2049,5063,10,1,9537,9,10,9513,9564,168,0,0,0,200,200,0,110,45,62,100, 105,103,105,116,0,2049,6831,17,15,10,9546,9586,168,0,0,0,200,200,0,99, 111,110,118,101,114,116,0,1793,9600,3841,265,20,4,2049,9564,2049,5063,2,2049,3470, 10,1,9588,2049,3093,3,10,9347,9636,168,0,-1041675421,15268,200,200,0,110,58,116,111, 45,115,116,114,105,110,103,47,114,101,118,101,114,115,101,100,0,1793,9650,1, 9447,2049,5179,2,2049,3906,2049,9586,2049,9533,10,1,9638,2049,5209,1,9447,10,9606,9678, 168,16941,-112957836,16312,200,200,54500,110,58,116,111,45,115,116,114,105,110,103,0,2049, 9636,2049,5693,10,9657,9697,168,0,0,0,200,200,0,99,104,97,114,0,1,32, 1793,9706,1,95,2049,5063,10,1,9701,2049,3274,1,114,1793,9719,1,13,2049,5063,10, 1,9714,2049,3274,1,110,1793,9732,1,10,2049,5063,10,1,9727,2049,3274,1,116,1793, 9745,1,9,2049,5063,10,1,9740,2049,3274,1,48,1793,9758,1,0,2049,5063,10,1, 9753,2049,3274,1,94,1793,9771,1,27,2049,5063,10,1,9766,2049,3274,2049,5063,10,9683, 9792,168,0,0,0,200,200,0,116,121,112,101,0,1,99,1793,9800,4,2049,5063, 10,1,9796,2049,3274,1,115,1793,9814,4,1,5063,2049,5849,10,1,9808,2049,3274,1, 110,1793,9830,4,2049,9678,1,5063,2049,5849,10,1,9822,2049,3274,3,10,9778,9852,168, 0,0,0,200,200,0,104,97,110,100,108,101,0,1,92,1793,9861,2049,58,2049, 9697,10,1,9856,2049,3274,1,37,1793,9874,2049,58,2049,9792,10,1,9869,2049,3274,2049, 5063,10,9657,9899,168,16941,67034811,16505,200,200,57325,115,58,102,111,114,109,97,116,0, 1793,9928,2049,5500,1793,9923,2049,5179,1793,9918,2049,58,25,2049,9852,1,9909,7,10,1, 9909,8,3,10,1,9905,2049,2905,10,1,9901,2049,5209,10,9881,9950,168,16941,649222073,16438, 200,200,56135,115,58,99,111,110,115,116,0,1,5557,2049,2889,2049,2763,10,9933,9973, 156,0,0,0,200,200,0,86,97,108,117,101,115,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,9957,10015,168,0,0,0,200,200,0,102,114,111,109,0,2049,104,2,1793, 10033,1793,10026,1,9973,4113,10,1,10022,2049,2905,2049,3971,10,1,10020,2049,3153,3,10, 10001,10051,168,0,0,0,200,200,0,116,111,0,2,2049,104,1793,10067,2049,58,1, 97,18,2049,3953,1,9973,266001,10,1,10056,2049,3153,3,10,9933,10090,168,16941,1054903512,16366, 200,200,55162,114,101,111,114,100,101,114,0,1,10015,2049,2889,2049,10051,10,10073,10112, 168,16941,255891066,15970,200,200,41037,99,117,114,114,121,0,2049,2585,1793,10122,4,2049,2394, 2049,2423,10,1,10116,2049,2889,10,10097,10141,168,16941,2090191632,16049,200,200,43140,100,111,101, 115,0,2049,2123,4,2049,10112,2049,2100,2049,182,16,1,168,2049,2200,10,10127,10176,168, 16941,-1106328024,15992,200,200,41615,100,58,102,111,114,45,101,97,99,104,0,1,2,1793, 10189,6415,2049,2873,134481157,1542,1,10180,7,10,1,10180,8,3,10,10156,10215,168,16941,-441700234, 16019,200,200,42344,100,58,108,111,111,107,117,112,45,120,116,0,1,0,4,1793, 10240,2049,2873,2049,182,2831,1793,10233,4,1,2816,2049,2889,10,1,10227,1,17,2049,66, 10,1,10220,2049,10176,3,10,10194,10258,168,16941,5863407,16138,200,200,51047,103,99,0,1, 3,4,2049,4871,10,10246,10282,168,16941,1957010690,15651,200,200,34666,97,58,108,101,110,103, 116,104,0,15,10,10264,10302,168,16941,2000526863,15664,200,200,34937,97,58,109,105,100,100, 108,101,0,2049,2585,1793,10325,2,2049,130,1793,10315,2049,3953,17,10,1,10311,2049,2889, 2049,2585,4,2049,4923,10,1,10306,2049,2889,10,10284,10346,168,16941,-293999829,15646,200,200,34592, 97,58,108,101,102,116,0,1,0,4,2049,10302,10,10330,10369,168,16941,-1104799682,15685,200, 200,35374,97,58,114,105,103,104,116,0,67502597,2049,10282,67502597,18,4,2049,10302,10,10352, 10405,168,16941,1310034705,15578,200,200,33374,97,58,99,111,117,110,116,101,100,45,114,101, 115,117,108,116,115,0,8,2049,2585,1793,10418,2,2049,130,1,130,2049,3153,10,1, 10410,2049,2889,10,10378,10446,168,16941,1031007224,15614,200,200,34119,97,58,102,114,111,109,45, 115,116,114,105,110,103,0,2049,2585,1793,10460,2,2049,104,2049,130,1,130,2049,5849, 10,1,10450,2049,2889,10,10423,10485,168,16941,-1309732155,15610,200,200,34068,97,58,102,111,114, 45,101,97,99,104,0,4,2049,58,1,19,2049,2889,1793,10501,5,2049,58,84018692,525572, 1542,10,1,10494,2049,3153,771,10,10465,10522,168,16941,251383785,15582,200,200,33521,97,58,100, 117,112,0,2049,2585,1793,10535,2,15,2049,130,1,130,2049,10485,10,1,10526,2049,2889, 10,10507,10556,168,16941,-294312037,15574,200,200,33332,97,58,99,111,112,121,0,1,3,1793, 10572,4097,3,2,2049,10282,2049,130,1,130,2049,10485,10,1,10560,2049,4871,10,10540,10598, 168,16941,865022503,15704,200,200,35645,97,58,116,111,45,115,116,114,105,110,103,0,1, 3,1793,10611,2049,10522,1,0,2049,130,2049,3953,10,1,10602,2049,4871,2049,5466,10,10577, 10636,168,16941,1539635992,15550,200,200,32984,97,58,97,112,112,101,110,100,0,2049,2873,1, 37,2049,2961,17,2049,2585,1793,10661,2049,130,1793,10656,1,130,2049,10485,10,1,10651,2049, 2961,10,1,10647,2049,2889,10,10618,10685,168,16941,1526142126,15670,200,200,35073,97,58,112,114, 101,112,101,110,100,0,4,2049,10636,10,10666,10705,168,16941,-294319702,15560,200,200,33121,97, 58,99,104,111,112,0,2049,10522,1,-1,2049,4846,2,2049,4765,10,10689,10733,168,16941, 1726883814,15601,200,200,33849,97,58,102,105,108,116,101,114,0,1793,10748,67502597,1,27,2049, 2889,4,1,130,1,17,2049,66,10,1,10735,2049,10112,2049,2585,1793,10763,67502597,15,2049, 130,2049,10485,10,1,10756,2049,2889,2049,2585,67502597,18,2049,3971,67502597,16,10,10715,10797,168, 16941,63806334,15569,200,200,33267,97,58,99,111,110,116,97,105,110,115,63,0,1,0, 4,1793,10809,4,5,67502597,11,6,22,10,1,10802,2049,10485,772,10,10776,10843,168,16941, 648332804,15564,200,200,33195,97,58,99,111,110,116,97,105,110,115,47,115,116,114,105, 110,103,63,0,1,0,4,1793,10856,4,5,67502597,2049,118,6,22,10,1,10848,2049, 10485,772,10,10815,10877,168,16941,251392926,15659,200,200,34829,97,58,109,97,112,0,4,1793, 10907,2049,58,1793,10901,1793,10890,15,67502597,8,10,1,10886,2049,2905,1,39,2049,2905,2049, 3953,10,1,10884,2049,3153,771,10,1,10880,2049,2905,10,10862,10931,168,16941,-674869668,15681,200, 200,35305,97,58,114,101,118,101,114,115,101,0,2049,2585,1793,10965,2049,58,1793,10943, 17,2049,3971,10,1,10939,2049,2905,2,2049,130,1793,10959,2,15,2049,130,2049,3971,10, 1,10952,2049,3153,3,10,1,10935,2049,2889,10,10912,10984,168,16941,2090026588,15699,200,200,35587, 97,58,116,104,0,17,2049,3953,10,10970,11005,168,16941,-1119160502,15596,200,200,33779,97,58, 102,101,116,99,104,0,2049,10984,15,10,10988,11026,168,16941,-1103209427,15690,200,200,35469,97, 58,115,116,111,114,101,0,2049,10984,16,10,11009,11047,168,16941,-1119018392,15606,200,200,34031, 97,58,102,105,114,115,116,0,1,0,2049,11005,10,11030,11068,168,16941,-294003756,15642,200, 200,34556,97,58,108,97,115,116,0,2,2049,10282,2049,3971,2049,11005,10,11052,11094,168, 16941,-2103488936,15675,200,200,35153,97,58,114,101,100,117,99,101,0,1,19,2049,2889,2049, 10485,10,11076,11115,168,16941,2089080839,15499,200,200,31596,70,82,69,69,0,2049,5292,1,1025, 18,1,513,1,12,19,18,2049,2585,18,10,11101,11149,156,0,0,0,200,200,0, 78,101,120,116,65,114,114,97,121,0,11,11130,11166,168,0,0,0,200,200,0, 97,114,114,97,121,115,0,2049,11115,2049,2585,17,10,11101,11188,168,16941,-293712106,15695,200, 200,35522,97,58,116,101,109,112,0,3841,11149,2,1,12,11,1793,11203,3,1,0, 2,4097,11149,10,1,11196,9,1,513,19,2049,11166,17,67502597,2049,10282,2049,3953,2049,4923, 3841,11149,1,513,19,2049,11166,17,1,11149,2049,4744,10,11172,11247,156,0,0,0,200, 200,0,67,111,117,110,116,0,3,11232,11265,168,0,0,0,200,200,0,112,114, 101,112,97,114,101,0,1,0,1,11247,16,10,11248,11288,168,0,0,0,200,200, 0,114,101,115,101,114,118,101,0,4,1,0,2049,130,10,11271,11309,168,0,0, 0,200,200,0,112,97,116,99,104,0,2049,2585,67502597,18,2049,3971,67502597,16,10,11294, 11335,168,0,0,0,200,200,0,99,108,101,97,110,117,112,0,2,2049,11188,4, 1,3,16,10,11318,11359,168,0,0,0,200,200,0,114,101,99,111,114,100,0, 3841,11247,2049,130,10,11343,11383,168,0,0,0,200,200,0,105,116,101,114,97,116, 101,47,110,0,1793,11395,67502597,11,1,11359,9,1,11247,2049,4744,10,1,11385,2049,10485, 10,11364,11419,168,0,0,0,200,200,0,105,116,101,114,97,116,101,47,115,0, 1793,11432,67502597,2049,118,1,11359,9,1,11247,2049,4744,10,1,11421,2049,10485,10,11172,11456, 168,16941,917819423,15632,200,200,34381,97,58,105,110,100,105,99,101,115,0,2049,11265,2049, 2585,1793,11468,2049,11288,2049,11383,3,10,1,11462,2049,2889,2049,11309,2049,11335,10,11437,11503, 168,16941,1942579685,15637,200,200,34473,97,58,105,110,100,105,99,101,115,47,115,116,114, 105,110,103,0,2049,11265,2049,2585,1793,11515,2049,11288,2049,11419,3,10,1,11509,2049,2889, 2049,11309,2049,11335,10,11477,11541,168,16941,-1115296648,15622,200,200,34222,97,58,105,110,100,101, 120,0,1793,11550,2049,11456,1,0,2049,11005,10,1,11543,2049,10258,10,11524,11579,168,16941, 1537607710,15627,200,200,34301,97,58,105,110,100,101,120,47,115,116,114,105,110,103,0, 1793,11588,2049,11503,1,0,2049,11005,10,1,11581,2049,10258,10,11555,11609,168,16941,-293968098,15655, 200,200,34696,97,58,109,97,107,101,0,2049,10405,2,2,1,3,1793,11620,2049,10931, 10,1,11617,2049,4871,4,2049,10556,10,11593,11639,180,16941,177696,16851,200,200,67459,123,0, 1,361,2049,180,1,2080,2049,168,1,361,2049,180,10,11628,11663,180,16941,177698,16855,200, 200,67609,125,0,1,377,2049,180,1,2889,2049,168,1,2080,2049,168,1,19,2049,174, 1,43,2049,174,1,3971,2049,168,1,377,2049,180,1,11609,2049,168,10,11652,11712,168, 16941,-294147516,15618,200,200,34180,97,58,104,97,115,104,0,1,5381,4,1793,11723,4,1, 33,19,17,10,1,11717,2049,10485,10,11696,11743,168,16941,251384693,15591,200,200,33633,97,58, 101,113,63,0,2049,11712,4,2049,11712,11,10,11728,11766,168,16941,-296263550,15545,200,200,32838, 97,58,45,101,113,63,0,2049,11712,4,2049,11712,12,10,11750,11797,168,16941,-946089728,15555, 200,200,33064,97,58,98,101,103,105,110,115,45,119,105,116,104,63,0,1,3, 1793,11813,2,2049,10282,1,19,2049,2889,2049,10346,2049,11743,10,1,11801,2049,4871,10,11773, 11840,168,16941,289116466,15586,200,200,33578,97,58,101,110,100,115,45,119,105,116,104,63, 0,1,3,1793,11856,2,2049,10282,1,19,2049,2889,2049,10369,2049,11743,10,1,11844,2049, 4871,10,11818,11881,156,0,0,0,200,200,0,83,117,98,115,116,105,116,117,116, 101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,11861,12026,168,0,0,0,200,200,0,101, 120,116,114,97,99,116,0,1,11881,2049,6805,10,12009,12048,168,0,0,0,200,200, 0,99,111,109,98,105,110,101,0,1,11881,2049,5825,2049,5825,10,12031,12073,168,0, 0,0,200,200,0,102,105,110,100,45,101,110,100,0,2,2049,104,1,11881,2049, 104,18,67502597,17,10,12055,12099,168,0,0,0,200,200,0,99,108,101,97,110,0, 2049,12073,1,0,4,16,10,11818,12129,168,16941,-495404876,16561,200,200,58273,115,58,114,101, 112,108,97,99,101,45,97,108,108,0,1,3,1793,12152,2049,12026,2049,9377,2049,5500, 4,1793,12145,2049,12048,10,1,12142,2049,10485,2049,12099,10,1,12133,2049,4871,10,12106,12179, 168,0,0,0,200,200,0,99,117,114,114,101,110,116,45,108,105,110,101,0, 2049,5292,1,1025,18,10,12157,12207,168,0,0,0,200,200,0,99,111,117,110,116, 45,116,111,107,101,110,115,0,1793,12213,1,32,11,10,1,12209,2049,6529,2049,104, 10,12185,12244,168,0,0,0,200,200,0,112,114,111,99,101,115,115,45,116,111, 107,101,110,115,0,1793,12272,1,32,2049,8708,4,1793,12265,2,2049,104,2049,3492,1, 439,1,17,2049,66,10,1,12253,2049,2889,2049,3953,10,1,12246,2049,3153,2049,439,10, 12106,12299,168,16941,102250697,16487,200,21243,56986,115,58,101,118,97,108,117,97,116,101,0, 2049,12179,2049,6805,2049,12179,2,2049,12207,2049,12244,10,12279,12323,156,0,0,0,200,200, 0,76,80,0,0,12311,12339,156,0,0,0,200,200,0,73,110,100,101,120,0, 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,12324,12385,168,0,0,0,200,200, 0,110,101,120,116,0,3841,12323,1,12339,17,2049,4744,10,12371,12407,168,0,0,0, 200,200,0,112,114,101,112,0,1,12323,2049,4744,1,0,3841,12323,1,12339,17,16, 10,12393,12434,168,0,0,0,200,200,0,100,111,110,101,0,1,12323,2049,4765,10, 12279,12450,168,16941,177646,15505,200,200,31906,73,0,3841,12323,1,12339,17,15,10,12439,12468, 168,16941,177647,15511,200,200,32039,74,0,3841,12323,1,12339,17,2049,3971,15,10,12457,12488, 168,16941,177648,15514,200,200,32129,75,0,3841,12323,1,12339,17,1,2,18,15,10,12477, 12521,168,16941,123652725,16189,200,200,52105,105,110,100,101,120,101,100,45,116,105,109,101, 115,0,2049,12407,4,1793,12537,25,33886721,1,2053,1542,2049,12385,1,12526,7,10,1,12526, 8,3,2049,12434,10,12498,12561,168,16941,139676308,16039,200,200,42983,100,101,99,105,109,97, 108,0,1,10,4097,265,10,12544,12582,168,16941,-199058230,15761,200,200,36545,98,105,110,97, 114,121,0,1,2,4097,265,10,12566,12602,168,16941,269476856,16331,200,200,54678,111,99,116, 97,108,0,1,8,4097,265,10,12587,12620,168,16941,193493706,16172,200,200,51674,104,101,120, 0,1,16,4097,265,10,12607,12640,168,16941,277702542,16817,200,200,66744,118,97,114,45,115, 0,1,5557,2049,2889,2049,2726,10,12625,12669,168,16941,-1648685963,16724,200,200,62572,116,97,105, 108,45,114,101,99,117,114,115,101,0,1,1793,2049,2585,1,3,18,16,10,12647, 12692,168,16941,2090257196,16090,200,200,50381,102,105,108,108,0,1793,12700,2049,2873,16,2049,3953, 10,1,12694,2049,3153,771,10,12678,12728,168,16941,-680426787,16196,200,200,52386,105,111,58,101, 110,117,109,101,114,97,116,101,0,27,10,12706,12748,168,16941,1388174477,16202,200,200,52462, 105,111,58,113,117,101,114,121,0,28,10,12730,12769,168,16941,-1755659805,16199,200,200,52420, 105,111,58,105,110,118,111,107,101,0,29,10,12750,12792,168,16941,-1816911632,16207,200,200, 52541,105,111,58,115,99,97,110,45,102,111,114,0,1,-1,4,2049,12728,1793,12823, 2049,12450,2049,12748,772,67502597,11,1793,12819,1793,12814,3,2049,12450,10,1,12810,2049,2889,10, 1,12808,9,10,1,12799,2049,12521,3,10,12771,12844,168,16941,253768699,15835,200,200,37891,99, 58,112,117,116,0,1793,12846,1,0,2049,12769,10,12829,12863,168,16941,5863647,16325,200,200, 54626,110,108,0,1,10,2049,12844,10,12851,12880,168,16941,5863816,16705,200,200,62345,115,112, 0,1,32,2049,12844,10,12868,12898,168,16941,193506620,16722,200,200,62545,116,97,98,0,1, 9,2049,12844,10,12885,12918,168,16941,272743435,16552,200,200,58207,115,58,112,117,116,0,1, 12844,2049,5849,10,12903,12938,168,16941,266813830,16297,200,200,54270,110,58,112,117,116,0,2049, 9636,2,2049,104,1,41,2049,2905,2049,3953,1793,12958,2,15,2049,12844,2049,3971,10,1, 12951,2049,3153,3,10,12923,12979,168,16941,273105544,16376,200,200,55236,114,101,115,101,116,0, 2049,2080,25,771,1,12979,7,10,12964,13007,168,16941,-1114973730,16059,200,200,43334,100,117,109, 112,45,115,116,97,99,107,0,2049,2080,25,134284547,13007,134283782,12938,2049,12880,10,12987,13030, 168,16941,193470948,15526,200,200,32543,84,73,66,0,1,7,15,10,1793,13073,2049,5525,69, 82,82,79,82,58,32,87,111,114,100,32,78,111,116,32,70,111,117,110,100, 58,32,0,1,13038,2049,12918,2049,13030,2049,12918,2049,12863,10,1,13036,13017,13090,168,16941, 253758370,15824,200,200,37735,99,58,103,101,116,0,1793,13092,1,1,2049,12792,2049,12769,10, 13075,13112,168,16941,193487813,15786,200,200,37157,98,121,101,0,26,10,13099,13132,156,16941,-606612126, 15508,200,200,31989,73,103,110,111,114,105,110,103,0,0,13114,13146,156,0,0,0, 200,200,0,69,79,84,0,0,13133,13164,168,0,0,0,200,200,0,118,101,114, 115,105,111,110,0,3841,4,1,100,20,10,13147,13185,168,0,0,0,200,200,0, 100,111,110,101,63,0,2,4097,13146,1793,13194,1,13,11,10,1,13190,1793,13202,1, 10,11,10,1,13198,1793,13210,1,32,11,10,1,13206,2049,2978,22,22,10,13170,13231, 168,0,0,0,200,200,0,101,111,108,63,0,3841,13146,1793,13239,1,13,11,10, 1,13235,1793,13247,1,10,11,10,1,13243,2049,2923,22,10,13217,13269,168,0,0,0, 200,200,0,118,97,108,105,100,63,0,2,2049,104,2049,3576,10,13253,13294,168,0, 0,0,200,200,0,99,104,101,99,107,45,101,111,102,0,2,1793,13301,1,-1, 11,10,1,13297,1793,13309,1,4,11,10,1,13305,2049,2923,22,1,13112,9,10,13275, 13330,168,0,0,0,200,200,0,98,115,0,2049,5153,1,2,2049,3411,1793,13342,2049, 5093,3,10,1,13338,9,2049,5093,3,10,13318,13367,168,0,0,0,200,200,0,99, 104,101,99,107,45,98,115,0,2,1793,13374,1,8,11,10,1,13370,1793,13382,1, 127,11,10,1,13378,2049,2923,22,1,13330,9,10,13349,13406,168,0,0,0,200,200, 0,99,104,101,99,107,0,2049,13294,2049,13367,10,13391,13430,168,0,0,0,200,200, 0,99,104,97,114,97,99,116,101,114,0,2049,13090,2,2049,5063,10,13411,13452,168, 0,0,0,200,200,0,98,117,102,102,101,114,0,1793,13462,2049,13030,2049,5179,8, 2049,5017,10,1,13454,2049,5209,10,13436,13487,168,0,0,0,200,200,0,114,101,97, 100,45,116,111,107,101,110,0,1793,13503,1793,13498,2049,13430,2049,13406,2049,13185,10,1, 13491,2049,3093,10,1,13489,2049,13452,2049,5660,10,13467,13525,168,0,0,0,200,200,0, 105,110,112,117,116,0,2049,13487,2049,13269,10,13510,13547,168,0,0,0,200,200,0, 112,114,111,99,101,115,115,0,3841,13132,1793,13565,771,2049,13231,1793,13561,1,13132,2049, 4827,10,1,13556,9,10,1,13551,2049,3638,1,439,1,17,2049,66,10,13114,13596,168, 16941,-371381765,16512,200,200,57400,115,58,103,101,116,45,119,111,114,100,0,1793,13624,1, 7,15,2049,5179,1793,13615,2049,13090,2,2049,5063,2049,13367,2049,13185,10,1,13605,2049,3093, 2049,5017,2049,5660,10,1,13598,2049,5209,10,13576,13645,168,16941,-208531877,15740,200,200,36362,98, 97,110,110,101,114,0,2049,13164,2049,5525,82,69,84,82,79,32,49,50,32,40, 37,110,46,37,110,41,92,110,0,1,13649,2049,9899,2049,12918,2049,11115,2049,2061,2049, 11115,18,2049,2061,2049,5525,37,110,32,77,97,120,44,32,37,110,32,85,115,101, 100,44,32,37,110,32,70,114,101,101,92,110,0,1,13685,2049,9899,2049,12918,10, 13629,13735,168,16941,192495636,16211,200,200,53196,108,105,115,116,101,110,0,2049,13645,2049,13525, 2049,13547,1,13737,7,10,13719,13770,156,16941,-2087665862,15978,200,200,41172,100,58,72,97,115, 104,45,70,117,110,99,116,105,111,110,0,5994,13745,13789,168,16941,1197910910,16027,200,200, 42532,100,58,114,101,104,97,115,104,0,1793,13807,1793,13799,2049,198,3841,13770,8,10, 1,13793,2049,2905,2049,188,16,10,1,13791,2049,10176,10,13771,3,156,16927,215559733,15479,200, 200,30345,66,85,73,76,68,0,13812,13842,168,14399,255669810,15939,200,200,39897,99,111,109, 109,97,0,2049,130,10,13827,13859,168,14399,2090155992,15956,200,200,40393,99,111,110,115,0, 2049,2585,1793,13869,4,2049,13842,2049,13842,10,1,13863,2049,2889,10,13845,13887,168,14399,193488123, 15877,200,200,38416,99,97,114,0,10,13874,13901,168,14399,193488222,15903,200,200,38693,99,100, 114,0,2049,3953,10,13888,13918,168,14399,2090140827,15885,200,200,38487,99,97,114,64,0,2049, 13887,15,10,13904,13936,168,14399,2090140796,15881,200,200,38455,99,97,114,33,0,2049,13887,16, 10,13922,13954,168,14399,2090144094,15911,200,200,38764,99,100,114,64,0,2049,13901,15,10,13940, 13972,168,14399,2090144063,15907,200,200,38732,99,100,114,33,0,2049,13901,16,10,13958,13989,168, 14399,193454780,15491,200,200,31389,69,78,68,0,10,13976,14010,168,14399,34709361,16099,200,200,50472, 102,108,108,58,99,114,101,97,116,101,0,1,13989,2049,13859,10,13990,14026,156,0, 177687,0,200,200,0,114,0,26621,13990,14047,168,14399,694444964,16126,200,200,50800,102,108,108, 58,116,111,45,101,110,100,0,2,4097,14026,1793,14072,2049,13954,2,1,13989,12,2, 1793,14065,67502597,4097,14026,10,1,14061,1,2816,2049,66,10,1,14052,2049,3064,3841,14026,10, 14027,14105,168,14399,577969665,16095,200,200,50442,102,108,108,58,97,112,112,101,110,100,47, 118,97,108,117,101,0,1,13989,2049,13859,4,2049,14047,2049,13972,10,14079,14137,168,14399, 341068837,16130,200,200,50867,102,108,108,58,116,111,45,105,110,100,101,120,0,1,13954, 2049,3153,10,14115,14159,168,14399,-1289432718,16103,200,200,50540,102,108,108,58,100,101,108,0, 2049,2873,2049,3971,2049,14137,1793,14172,2049,3953,2049,14137,10,1,14167,2049,2889,2049,13972,10, 14142,14195,156,0,-1497417501,0,200,200,0,65,99,116,105,111,110,0,14595,14142,14218,168, 14399,-982785918,16110,200,200,50613,102,108,108,58,102,111,114,45,101,97,99,104,0,4097, 14195,1793,14241,1793,14230,2049,13918,3841,14195,8,10,1,14224,2049,2905,2049,13954,2,1,13989, 12,10,1,14222,2049,3064,3,10,14196,14267,168,14399,371840895,16119,200,200,50728,102,108,108, 58,108,101,110,103,116,104,0,1,0,4,1793,14276,3,2049,3953,10,1,14272,2049, 14218,2049,3971,10,14247,14301,168,14399,398407634,16107,200,200,50579,102,108,108,58,100,114,111, 112,0,2,2049,14267,2049,3971,2049,14137,1,13989,4,2049,13972,10,14283,14325,156,0,177678, 0,200,200,0,105,0,0,14283,14346,168,14399,264961530,16114,200,200,50659,102,108,108,58, 105,110,106,101,99,116,0,2049,14010,4097,14325,2049,2873,2049,3971,2049,14137,1,14137,2049, 2889,3841,14325,4,2049,13972,3841,14325,2049,13972,10,14326,14387,168,14399,-1289419114,16123,200,200,50757, 102,108,108,58,112,117,116,0,1793,14394,2049,12938,2049,12880,10,1,14389,2049,14218,10, 105,110,116,101,114,102,97,99,101,47,108,108,46,114,101,116,114,111,0,105, 110,105,116,0,14418,14692,14370,14447,156,14670,-1761629780,16460,200,200,56554,115,58,100,101,100, 117,112,46,100,97,116,97,0,14423,14425,14460,156,0,5863786,0,200,200,0,116,49, 0,517632,14448,14473,156,0,5863787,0,200,200,0,116,50,0,27672,14425,14500,168,14670,-19532457, 16471,200,200,56787,115,58,100,101,100,117,112,46,114,101,103,105,115,116,101,114, 0,2049,5557,3841,14447,4,1,14105,2049,2905,10,14474,14536,168,14670,283388512,16463,200,200,56607, 115,58,100,101,100,117,112,46,100,101,102,105,110,101,100,63,0,4097,14460,1, 0,4097,14473,3841,14447,1793,14556,3841,14460,2049,118,3841,14473,22,4097,14473,10,1,14546,2049, 14218,3841,14473,10,14510,14585,168,14670,-1761549389,16467,200,200,56662,115,58,100,101,100,117,112, 46,102,105,110,100,0,4097,14460,1,0,4097,14473,3841,14447,1793,14612,2,3841,14460,2049, 118,1793,14605,4097,14473,10,1,14602,1,17,2049,66,10,1,14595,2049,14218,3841,14473,10, 14563,14636,168,14670,650037796,16456,200,200,56509,115,58,100,101,100,117,112,0,2049,5466,2, 2049,14536,1,14585,1,14500,2049,66,10,14619,14667,168,14670,59688232,16639,200,200,59721,115,58, 117,110,105,113,117,101,63,0,2049,14536,10,105,110,116,101,114,102,97,99,101, 47,100,101,100,117,112,46,114,101,116,114,111,0,14670,16925,14648,14708,168,0,2090715988, 0,200,200,0,115,97,118,101,0,2049,3953,2049,5660,2049,2585,4,2049,5557,1,17, 2049,174,1,2,17,2049,2178,1,4,18,16,10,14694,14755,168,0,-1362045190,0,200,200, 0,115,116,97,99,107,45,99,111,109,109,101,110,116,63,0,2,1,0,2049, 5621,1,58,11,10,14648,14781,180,0,-1801857825,16672,200,200,60852,115,105,103,105,108,58, 40,0,2049,14755,1,14708,1,17,2049,66,10,14764,14810,168,0,-369994876,14812,200,200,0, 100,58,100,101,115,99,114,105,98,101,0,2049,5525,115,45,0,1,14812,3,2049, 258,25,2049,12863,2,2049,5525,78,97,109,101,58,32,32,32,32,32,0,1,14826, 2049,12918,2049,198,2049,12918,2049,12863,2,2049,5525,65,100,100,114,101,115,115,58,32, 32,0,1,14850,2049,12918,2049,182,15,2049,12938,2049,12863,2,2049,5525,67,108,97,115, 115,58,32,32,32,32,0,1,14875,2049,12918,2049,184,15,2,2049,12938,2049,10215,2, 2049,3492,1793,14910,2049,12880,2049,198,2049,12918,10,1,14903,1,17,2049,66,2049,12863,2, 2049,5525,83,111,117,114,99,101,58,32,32,32,0,1,14921,2049,12918,2049,186,15, 2,2049,3492,1,12918,1,17,2049,66,2049,12863,2,2049,5525,83,116,97,99,107,58, 32,32,32,32,0,1,14953,2049,12918,2049,190,15,2,2049,3492,1,12918,1,17,2049, 66,2049,12863,2,2049,5525,65,46,32,83,116,97,99,107,58,32,0,1,14985,2049, 12918,2049,192,15,2,2049,3492,1,12918,1,17,2049,66,2049,12863,2,2049,5525,70,108, 111,97,116,58,32,32,32,32,0,1,15017,2049,12918,2049,194,15,2,2049,3492,1, 12918,1,17,2049,66,2049,12863,2,2049,5525,68,101,115,99,114,58,32,32,32,32, 0,1,15049,2049,12918,2049,196,15,2,2049,3492,1,12918,1,17,2049,66,2049,12863,3, 10,14790,15109,168,0,1590555890,15111,200,200,0,100,58,115,101,116,45,115,116,97,99, 107,45,99,111,109,109,101,110,116,0,2049,5525,115,115,45,0,1,15111,3,2049, 258,2,2049,3492,1793,15133,2049,190,1,5557,2049,2889,16,10,1,15125,1,2837,2049,66, 10,15080,15170,168,0,-18898317,15172,200,200,0,100,58,115,101,116,45,97,115,116,97, 99,107,45,99,111,109,109,101,110,116,0,2049,5525,115,115,45,0,1,15172,3, 2049,258,2,2049,3492,1793,15194,2049,192,1,5557,2049,2889,16,10,1,15186,1,2837,2049, 66,10,15140,15231,168,0,656458392,15233,200,200,0,100,58,115,101,116,45,102,115,116, 97,99,107,45,99,111,109,109,101,110,116,0,2049,5525,115,115,45,0,1,15233, 3,2049,258,2,2049,3492,1793,15255,2049,194,1,5557,2049,2889,16,10,1,15247,1,2837, 2049,66,10,110,45,0,45,110,0,110,45,115,0,115,45,115,0,115,45,115, 102,0,45,0,100,45,97,0,100,45,97,0,100,45,97,0,100,45,97,0, 45,99,0,45,115,0,45,0,45,0,110,110,45,110,0,110,110,45,110,0, 110,45,0,110,110,45,110,0,45,0,110,110,45,102,0,102,113,45,0,102, 113,45,0,110,109,45,118,0,110,109,45,114,118,0,110,45,110,32,124,124, 32,110,45,0,45,0,110,45,110,110,32,124,124,32,110,45,110,0,45,110, 0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45, 110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0, 45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110, 0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45, 110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0,45,110,0, 45,110,0,45,97,0,45,97,0,45,97,0,45,0,45,97,0,45,110,0, 45,110,0,45,97,0,45,110,0,45,97,0,45,110,0,45,110,0,45,97, 0,45,97,0,45,97,0,45,97,0,45,110,0,45,97,0,45,97,0,45, 97,0,45,0,45,0,97,97,45,102,0,97,97,45,97,0,97,97,45,102, 0,97,45,97,0,115,97,45,102,0,110,97,45,102,0,97,97,45,0,113, 45,97,0,97,45,98,0,97,97,45,102,0,97,97,45,102,0,97,110,45, 110,0,97,113,45,98,0,97,45,110,0,97,113,45,0,115,45,97,0,97, 45,110,0,97,110,45,110,0,97,115,45,110,0,97,118,45,97,0,97,115, 45,97,0,97,45,110,0,97,110,45,97,0,97,45,110,0,113,45,97,0, 97,113,45,98,0,97,102,108,45,97,0,97,97,45,97,0,112,110,113,45, 110,0,97,45,98,0,97,110,45,97,0,118,97,110,45,0,97,45,97,0, 97,110,45,98,0,97,45,115,0,45,0,110,45,0,110,109,45,111,0,97, 45,110,0,97,45,97,110,0,110,97,45,0,110,97,45,97,0,97,45,97, 0,45,0,120,113,113,45,63,0,120,121,113,113,45,63,0,120,121,113,45, 63,0,45,0,110,45,0,45,0,45,97,0,45,110,0,113,45,0,97,45, 0,45,110,0,45,97,0,45,0,99,45,102,0,99,45,102,0,99,45,102, 0,99,45,102,0,99,45,102,0,99,45,102,0,99,45,102,0,99,45,102, 0,99,45,102,0,45,99,0,99,45,102,0,99,45,102,0,99,45,0,99, 45,99,0,99,45,110,0,99,45,115,0,99,45,99,0,99,45,99,0,99, 45,102,0,99,45,102,0,99,45,102,0,99,45,102,0,97,45,0,97,45, 97,0,110,97,45,0,97,45,110,0,110,109,113,45,32,124,124,32,110,109, 113,45,110,0,97,45,97,0,110,97,45,0,97,45,110,0,102,113,113,45, 0,110,45,32,124,124,32,110,45,110,0,97,45,0,97,45,0,97,45,0, 110,45,0,97,45,0,97,45,0,110,45,0,45,0,45,102,0,120,121,45, 97,0,110,115,45,0,115,100,108,45,0,110,113,45,113,0,110,45,0,45, 0,115,97,97,45,0,100,45,97,0,115,45,0,113,45,0,100,45,97,0, 45,100,0,45,97,0,45,115,0,45,97,0,100,45,97,0,115,45,100,0, 97,45,100,0,100,45,115,0,45,0,100,45,97,0,100,45,97,0,45,0, 45,0,45,110,0,110,113,45,110,0,113,45,0,110,45,0,110,110,45,0, 45,0,110,45,110,110,0,110,109,45,110,109,110,109,0,45,0,110,110,45, 102,0,97,45,110,0,97,45,97,110,0,118,112,110,45,0,112,118,45,0, 118,45,112,0,112,110,45,0,112,45,0,112,113,45,0,112,110,118,45,0, 112,45,110,0,112,45,0,112,45,112,0,112,110,45,112,0,113,45,0,97, 45,0,110,110,45,102,0,110,110,45,102,0,97,45,110,0,97,45,97,110, 0,110,97,45,0,110,97,45,97,0,45,97,0,45,0,45,0,115,45,0, 102,113,45,0,102,113,45,0,45,0,110,113,45,0,115,45,0,45,110,0, 110,45,0,110,45,109,78,0,110,45,109,0,45,0,110,110,45,102,0,110, 110,45,102,0,110,109,45,111,0,110,45,102,0,45,110,0,45,110,0,110, 45,110,0,110,108,117,45,102,0,110,45,109,0,110,45,102,0,110,45,109, 0,110,108,117,45,109,0,109,110,45,111,0,109,110,45,111,0,110,45,110, 0,110,45,102,0,110,45,102,0,110,45,102,0,98,112,45,110,0,110,45, 0,110,45,109,0,110,45,109,0,110,45,102,0,110,45,115,0,110,45,102, 0,110,109,45,109,0,45,0,110,45,109,0,45,0,109,110,45,111,0,110, 109,45,110,109,110,0,110,110,110,110,45,110,0,45,110,0,45,0,110,45, 0,115,45,0,97,45,0,46,46,46,115,115,45,63,0,45,0,46,46,46, 45,0,97,98,99,45,98,99,97,0,115,45,0,45,115,0,45,115,0,45, 115,0,45,115,0,45,115,0,45,115,0,115,115,45,115,0,115,115,45,102, 0,115,83,113,45,32,124,124,32,115,83,113,45,115,0,115,45,115,0,115, 115,45,0,115,99,45,102,0,115,115,45,102,0,115,97,45,0,115,45,115, 0,45,97,0,115,45,102,0,115,45,115,0,115,45,0,45,115,0,115,115, 45,102,0,115,115,45,102,0,115,45,63,0,115,110,45,110,0,115,113,45, 115,0,115,113,45,0,46,46,46,115,45,115,0,45,115,0,115,45,110,0, 115,99,45,110,0,115,115,45,110,0,115,45,115,0,115,110,45,115,0,115, 45,110,0,115,113,45,115,0,115,115,45,115,0,115,45,0,115,115,115,45, 115,0,115,115,115,45,115,0,115,45,115,0,115,110,45,115,0,45,0,115, 99,45,115,115,0,115,115,45,115,115,0,99,115,110,45,0,115,102,108,45, 115,0,115,45,115,0,115,45,115,0,115,45,110,0,115,45,115,0,115,99, 45,97,0,115,115,45,97,0,115,45,115,0,115,45,115,0,115,45,115,0, 115,45,102,0,97,97,45,0,109,110,45,111,0,110,115,45,0,115,45,110, 0,115,45,99,0,115,45,97,0,115,45,115,0,115,45,0,115,45,0,115, 45,110,0,115,45,0,115,45,0,115,45,0,115,45,0,110,113,40,63,110, 45,63,41,45,110,0,45,0,110,97,45,0,110,97,45,97,0,110,109,45, 109,110,0,45,0,45,0,110,113,45,0,120,113,113,113,45,63,0,120,121, 122,113,113,113,45,63,0,120,121,122,113,45,63,0,110,109,45,109,110,109, 0,97,45,0,110,45,110,110,110,110,0,113,40,45,102,41,45,0,97,45, 0,110,97,45,0,97,45,0,110,97,45,0,97,108,117,45,0,97,45,0, 97,45,0,97,113,45,0,97,113,45,0,115,45,0,110,115,45,0,115,115, 45,0,97,45,110,0,97,45,97,110,0,110,97,45,0,110,97,45,97,0, 113,40,45,102,41,45,0,109,110,45,111,0,45,0,45,0,45,97,0,45, 0,15201,16882,168,16901,515454189,16884,200,200,42591,100,58,115,101,116,45,115,111,117,114, 99,101,0,2049,5525,115,115,45,0,1,16884,3,1,14636,2049,2889,2049,258,2049,186, 16,10,105,110,116,101,114,102,97,99,101,47,115,111,117,114,99,101,115,46, 114,101,116,114,111,0,16901,16939,98,117,105,108,100,46,114,101,116,114,111,0, 16927,16953,114,101,116,114,111,46,102,111,114,116,104,0,16941,17537,16860,0,156,17513, 24453216,16980,200,200,31021,68,69,86,73,67,69,58,79,85,84,80,85,84,0,45, 110,0,16955,1,156,17513,-1120109408,17008,200,200,30905,68,69,86,73,67,69,58,75,69, 89,66,79,65,82,68,0,45,110,0,16981,2,156,17513,-338634664,17034,200,200,30790,68, 69,86,73,67,69,58,70,76,79,65,84,83,0,45,110,0,17009,4,156,17513, -10372606,17059,200,200,30750,68,69,86,73,67,69,58,70,73,76,69,83,0,45,110, 0,17035,3,156,17513,-495174355,17085,200,200,30594,68,69,86,73,67,69,58,66,76,79, 67,75,83,0,45,110,0,17060,5,156,17513,-13819365,17110,200,200,30630,68,69,86,73, 67,69,58,67,76,79,67,75,0,45,110,0,17086,6,156,17513,-845755547,17139,200,200, 31117,68,69,86,73,67,69,58,82,69,83,69,82,86,69,68,54,0,45,110, 0,17111,7,156,17513,173262360,17165,200,200,31223,68,69,86,73,67,69,58,83,79,67, 75,69,84,0,45,110,0,17140,8,156,17513,-1171124621,17189,200,200,31253,68,69,86,73, 67,69,58,85,78,73,88,0,45,110,0,17166,9,156,17513,633651458,17218,200,200,31183, 68,69,86,73,67,69,58,83,67,82,73,80,84,73,78,71,0,45,110,0, 17190,10,156,17513,-1597298186,17241,200,200,31137,68,69,86,73,67,69,58,82,78,71,0, 45,110,0,17219,11,156,17513,-2140129391,17271,200,200,31057,68,69,86,73,67,69,58,82, 69,83,69,82,86,69,68,49,49,0,45,110,0,17242,12,156,17513,-2140129390,17301,200, 200,31077,68,69,86,73,67,69,58,82,69,83,69,82,86,69,68,49,50,0, 45,110,0,17272,13,156,17513,-2140129389,17331,200,200,31097,68,69,86,73,67,69,58,82, 69,83,69,82,86,69,68,49,51,0,45,110,0,17302,14,156,17513,-6608534,17356,200, 200,30862,68,69,86,73,67,69,58,73,79,67,84,76,0,45,110,0,17332,15, 156,17513,-77828057,17382,200,200,30942,68,69,86,73,67,69,58,77,65,76,76,79,67, 0,45,110,0,17357,1000,156,17513,-6683022,17407,200,200,30827,68,69,86,73,67,69,58, 73,77,65,71,69,0,45,110,0,17383,1234,156,17513,-11228231,17432,200,200,30664,68,69, 86,73,67,69,58,69,82,82,79,82,0,45,110,0,17408,8000,156,17513,1388216643,17461, 200,200,30981,68,69,86,73,67,69,58,77,85,76,84,73,67,79,82,69,0, 45,110,0,17433,8100,156,17513,-1597311516,17484,200,200,30701,68,69,86,73,67,69,58,70, 70,73,0,45,110,0,17462,8101,156,17513,-1625916788,17512,200,200,31288,68,69,86,73,67, 69,58,85,78,83,73,71,78,69,68,0,45,110,0,105,110,116,101,114,102, 97,99,101,47,100,101,118,105,99,101,115,46,114,101,116,114,111,0,17513,20982, 17485,17564,168,20952,1141548230,17566,200,200,50935,102,108,111,97,116,58,111,112,101,114,97, 116,105,111,110,0,2049,5525,110,45,0,1,17566,3,1,2,2049,12792,2,2049,3517, 1793,17630,3,2049,5525,69,114,114,111,114,58,32,102,108,111,97,116,105,110,103, 32,112,111,105,110,116,32,100,101,118,105,99,101,32,110,111,116,32,102,111, 117,110,100,0,1,17584,2049,12918,2049,12863,10,1,17581,2049,3638,2049,12769,10,17539,17657, 168,20952,891922707,17659,200,21240,54454,110,58,116,111,45,102,108,111,97,116,0,2049,5525, 110,45,95,102,58,45,110,0,1,17659,3,1,0,2049,17564,10,17637,17695,168,20952, 1230929592,17697,200,21246,59071,115,58,116,111,45,102,108,111,97,116,0,2049,5525,115,45, 95,102,58,45,110,0,1,17697,3,1,1,2049,17564,10,17675,17734,168,20952,-1027330818,17736, 200,21227,47957,102,58,116,111,45,110,117,109,98,101,114,0,2049,5525,102,58,97, 45,95,95,45,110,0,1,17736,3,1,2,2049,17564,10,17713,17774,168,20952,-832652180,17776, 200,21230,48003,102,58,116,111,45,115,116,114,105,110,103,0,2049,5525,102,58,110, 45,95,95,45,115,0,1,17776,3,2049,5500,2,1,3,2049,17564,10,17753,17809,168, 20952,193490032,17811,200,20992,44545,102,58,43,0,2049,5525,102,58,97,98,45,99,0,1, 17811,3,1,4,2049,17564,10,17796,17839,168,20952,193490034,17841,200,20997,44599,102,58,45,0, 2049,5525,102,58,97,98,45,99,0,1,17841,3,1,5,2049,17564,10,17826,17869,168, 20952,193490031,17871,200,20987,44486,102,58,42,0,2049,5525,102,58,97,98,45,99,0,1, 17871,3,1,6,2049,17564,10,17856,17899,168,20952,193490036,17901,200,21012,44868,102,58,47,0, 2049,5525,102,58,97,98,45,99,0,1,17901,3,1,7,2049,17564,10,17886,17933,168, 20952,1043458567,17935,200,21097,46336,102,58,102,108,111,111,114,0,2049,5525,102,58,97,98, 45,99,0,1,17935,3,1,8,2049,17564,10,17916,17969,168,20952,-1700567744,17971,200,21058,45710, 102,58,99,101,105,108,105,110,103,0,2049,5525,102,58,102,45,102,0,1,17971, 3,1,9,2049,17564,10,17950,18001,168,20952,-98057841,18003,200,21203,47640,102,58,115,113,114, 116,0,2049,5525,102,58,102,45,102,0,1,18003,3,1,10,2049,17564,10,17985,18032, 168,20952,257314298,18034,200,21090,46196,102,58,101,113,63,0,2049,5525,102,58,97,98,45, 99,0,1,18034,3,1,11,2049,17564,10,18017,18065,168,20952,-100586585,18067,200,21005,44691,102, 58,45,101,113,63,0,2049,5525,102,58,97,98,45,99,0,1,18067,3,1,12, 2049,17564,10,18049,18097,168,20952,257322020,18099,200,21123,46715,102,58,108,116,63,0,2049,5525, 102,58,97,98,45,99,0,1,18099,3,1,13,2049,17564,10,18082,18129,168,20952,257316575, 18131,200,21101,46404,102,58,103,116,63,0,2049,5525,102,58,97,98,45,99,0,1, 18131,3,1,14,2049,17564,10,18114,18163,168,20952,1040836410,18165,200,200,45857,102,58,100,101, 112,116,104,0,2049,5525,45,110,0,1,18165,3,1,15,2049,17564,10,18146,18191,168, 20952,257313390,18193,200,21077,46102,102,58,100,117,112,0,2049,5525,102,58,97,45,97,97, 0,1,18193,3,1,16,2049,17564,10,18176,18224,168,20952,-98595910,18226,200,21070,45913,102,58, 100,114,111,112,0,2049,5525,102,58,97,45,0,1,18226,3,1,17,2049,17564,10, 18208,18255,168,20952,-98051872,18257,200,21214,47800,102,58,115,119,97,112,0,2049,5525,102,58, 97,98,45,98,97,0,1,18257,3,1,18,2049,17564,10,18239,18288,168,20952,257321895,18290, 200,21118,46661,102,58,108,111,103,0,2049,5525,102,58,97,98,45,99,0,1,18290, 3,1,19,2049,17564,10,18273,18322,168,20952,1055433970,18324,200,21165,47240,102,58,112,111,119, 101,114,0,2049,5525,102,58,97,98,45,99,0,1,18324,3,1,20,2049,17564,10, 18305,18354,168,20952,257329327,18356,200,21199,47596,102,58,115,105,110,0,2049,5525,102,58,102, 45,102,0,1,18356,3,1,21,2049,17564,10,18339,18385,168,20952,257330152,18387,200,21220,47863, 102,58,116,97,110,0,2049,5525,102,58,102,45,102,0,1,18387,3,1,22,2049, 17564,10,18370,18416,168,20952,257312106,18418,200,21062,45791,102,58,99,111,115,0,2049,5525,102, 58,102,45,102,0,1,18418,3,1,23,2049,17564,10,18401,18448,168,20952,-98702832,18450,200, 21040,45323,102,58,97,115,105,110,0,2049,5525,102,58,102,45,102,0,1,18450,3, 1,24,2049,17564,10,18432,18480,168,20952,-98720053,18482,200,21036,45207,102,58,97,99,111,115, 0,2049,5525,102,58,102,45,102,0,1,18482,3,1,25,2049,17564,10,18464,18512,168, 20952,-98702007,18514,200,21044,45371,102,58,97,116,97,110,0,2049,5525,102,58,102,45,102, 0,1,18514,3,1,26,2049,17564,10,18496,18544,168,20952,-98161275,18546,200,21170,47280,102,58, 112,117,115,104,0,2049,5525,102,58,102,45,0,1,18546,3,1,27,2049,17564,10, 18528,18574,168,20952,257326260,18576,200,21159,47115,102,58,112,111,112,0,2049,5525,102,58,45, 102,0,1,18576,3,1,28,2049,17564,10,18559,18607,168,20952,-131128101,18609,200,200,45257,102, 58,97,100,101,112,116,104,0,2049,5525,45,110,0,1,18609,3,1,29,2049,17564, 10,18589,18636,168,20952,-98196575,18638,200,21152,47051,102,58,111,118,101,114,0,2049,5525,102, 58,97,98,45,97,98,97,0,1,18638,3,2049,18544,2049,18191,2049,18574,2049,18255,10, 18620,18675,168,20952,-98018052,18677,200,21233,48049,102,58,116,117,99,107,0,2049,5525,102,58, 97,98,45,98,97,98,0,1,18677,3,2049,18191,2049,18544,2049,18255,2049,18574,10,18659, 18713,168,20952,257323884,18715,200,21147,47012,102,58,110,105,112,0,2049,5525,102,58,97,98, 45,98,0,1,18715,3,2049,18255,2049,18224,10,18698,18751,168,20952,400249779,18753,200,21073,45963, 102,58,100,114,111,112,45,112,97,105,114,0,2049,5525,102,58,97,98,45,0, 1,18753,3,2049,18224,2049,18224,10,18730,18787,168,20952,-1227267353,18789,200,21082,46154,102,58,100, 117,112,45,112,97,105,114,0,2049,5525,102,58,97,98,45,97,98,97,98,0, 1,18789,3,2049,18636,2049,18636,10,18767,18822,168,20952,257328442,18824,200,21176,47366,102,58,114, 111,116,0,2049,5525,102,58,97,98,99,45,98,99,97,0,1,18824,3,2049,18544, 2049,18255,2049,18574,2049,18255,10,18807,18863,180,20952,-1801857819,18865,200,21249,60880,115,105,103,105, 108,58,46,0,2049,5525,115,45,95,95,102,58,45,97,0,1,18865,3,2049,2505, 1,5557,1,5466,2049,66,1,17695,2049,168,10,18846,18908,168,20952,589284534,18910,200,21207,47691, 102,58,115,113,117,97,114,101,0,2049,5525,102,58,110,45,109,0,1,18910,3, 2049,18191,2049,17869,10,18890,18945,168,20952,-243186313,18947,200,21162,47168,102,58,112,111,115,105, 116,105,118,101,63,0,2049,5525,45,102,95,95,102,58,97,45,0,1,18947,3, 1,0,2049,17657,2049,18129,10,18924,18987,168,20952,529659031,18989,200,21144,46943,102,58,110,101, 103,97,116,105,118,101,63,0,2049,5525,45,102,95,95,102,58,97,45,0,1, 18989,3,1,0,2049,17657,2049,18097,10,18966,19026,168,20952,378873465,19028,200,21140,46898,102,58, 110,101,103,97,116,101,0,2049,5525,102,58,97,45,98,0,1,19028,3,1,-1, 2049,17657,2049,17869,10,19008,19059,168,20952,257309499,19061,200,21032,45153,102,58,97,98,115,0, 2049,5525,102,58,97,45,98,0,1,19061,3,2049,18191,2049,18987,1,19026,9,10,19044, 19093,168,20952,257326462,19095,200,21173,47333,102,58,112,117,116,0,2049,5525,102,58,97,45, 0,1,19095,3,2049,17774,2049,12918,10,19078,19122,168,20952,2090205054,19124,200,21029,45113,102,58, 80,73,0,2049,5525,102,58,45,70,0,1,19124,3,2049,5525,51,46,49,52,49, 53,57,50,54,53,52,0,1,19134,2049,17695,10,19108,19164,168,20952,193490058,19166,200,21017, 44906,102,58,69,0,2049,5525,102,58,45,70,0,1,19166,3,2049,5525,50,46,55, 49,56,50,56,49,56,50,56,0,1,19176,2049,17695,10,19151,19208,168,20952,257287682,19210, 200,21026,45077,102,58,78,65,78,0,2049,5525,102,58,45,110,0,1,19210,3,2049, 5525,48,0,1,19220,2049,17695,2049,5525,48,0,1,19228,2049,17695,2049,17899,10,19193,19252, 168,20952,257282658,19254,200,21023,45027,102,58,73,78,70,0,2049,5525,102,58,45,110,0, 1,19254,3,2049,5525,49,46,48,0,1,19264,2049,17695,2049,5525,48,0,1,19274,2049, 17695,2049,17899,10,19237,19299,168,20952,-100618225,19301,200,21002,44641,102,58,45,73,78,70,0, 2049,5525,102,58,45,110,0,1,19301,3,2049,5525,45,49,46,48,0,1,19311,2049, 17695,2049,5525,48,0,1,19322,2049,17695,2049,17899,10,19283,19347,168,20952,-98255135,19349,200,21137, 46831,102,58,110,97,110,63,0,2049,5525,102,58,110,45,44,45,102,0,1,19349, 3,2049,18191,2049,18065,10,19331,19381,168,20952,-98420927,19383,200,21109,46476,102,58,105,110,102, 63,0,2049,5525,102,58,110,45,44,45,102,0,1,19383,3,2049,19252,2049,18032,10, 19365,19416,168,20952,975751822,19418,200,21009,44800,102,58,45,105,110,102,63,0,2049,5525,102, 58,110,45,44,45,102,0,1,19418,3,2049,19299,2049,18032,10,19399,19451,168,20952,1057803917, 19453,200,21184,47395,102,58,114,111,117,110,100,0,2049,5525,45,124,102,58,97,45, 98,0,1,19453,3,2049,18191,2049,18987,1793,19485,2049,5525,48,46,53,0,1,19472,2049, 17695,2049,17839,2049,17969,10,1,19470,1793,19504,2049,5525,48,46,53,0,1,19491,2049,17695, 2049,17809,2049,17933,10,1,19489,2049,66,10,19434,19524,168,20952,257322793,19526,200,21132,46798,102, 58,109,105,110,0,2049,5525,102,58,110,110,45,110,0,1,19526,3,2049,18787,2049, 18097,1,18224,1,18713,2049,66,10,19509,19562,168,20952,257322539,19564,200,21127,46764,102,58,109, 97,120,0,2049,5525,102,58,110,110,45,110,0,1,19564,3,2049,18787,2049,18129,1, 18224,1,18713,2049,66,10,19547,19602,168,20952,1050463908,19604,200,21112,46543,102,58,108,105,109, 105,116,0,2049,5525,102,58,110,108,117,45,110,0,1,19604,3,2049,18255,2049,18544, 2049,19524,2049,18574,2049,19562,10,19585,19646,168,20952,490450478,19648,200,21048,45422,102,58,98,101, 116,119,101,101,110,63,0,2049,5525,102,58,110,108,117,45,110,0,1,19648,3, 2049,18822,2049,18191,2049,18544,2049,18822,2049,18822,2049,19602,2049,18574,2049,18032,10,19626,19691,168, 20952,257318591,19693,200,21105,46456,102,58,105,110,99,0,2049,5525,102,58,110,45,110,0, 1,19693,3,2049,5525,49,0,1,19704,2049,17695,2049,17809,10,19676,19728,168,20952,257312849,19730, 200,21066,45837,102,58,100,101,99,0,2049,5525,102,58,110,45,110,0,1,19730,3, 2049,5525,49,0,1,19741,2049,17695,2049,17839,10,19713,19766,168,20952,-98650239,19768,200,21053,45546, 102,58,99,97,115,101,0,2049,5525,102,58,102,102,45,44,113,45,0,1,19768, 3,2049,18636,2049,18032,1793,19792,2049,18224,8,1,-1,10,1,19786,1793,19800,3,1,0, 10,1,19796,2049,66,25,6,771,10,19750,19824,168,20952,-98066922,19826,200,21188,47425,102,58, 115,105,103,110,0,2049,5525,45,110,124,102,58,97,45,0,1,19826,3,2049,18191, 2049,5525,48,0,1,19841,2049,17695,2049,18032,1793,19856,1,0,2049,18224,10,1,19851,2049, 3638,2049,5525,48,0,1,19862,2049,17695,2049,18129,1793,19875,1,1,10,1,19872,1793,19882, 1,-1,10,1,19879,2049,66,10,19808,2147483645,156,20952,256100682,19904,200,200,43606,101,58,77, 65,88,0,45,110,0,19887,-2147483645,156,20952,256100936,19922,200,200,43666,101,58,77,73,78, 0,45,110,0,19905,-2147483647,156,20952,256101761,19940,200,200,43726,101,58,78,65,78,0,45, 110,0,19923,2147483646,156,20952,256096737,19958,200,200,43551,101,58,73,78,70,0,45,110,0, 19941,-2147483646,156,20952,-139753618,19977,200,200,43450,101,58,45,73,78,70,0,45,110,0,19959, 19992,168,20952,2090170097,19994,200,200,43930,101,58,110,63,0,2049,5525,117,45,102,0,1, 19994,3,1,-2147483645,2049,3953,1,2147483645,2049,3971,2049,3994,10,19978,20028,168,20952,-137426135,20030,200, 200,43864,101,58,109,97,120,63,0,2049,5525,117,45,102,0,1,20030,3,1,2147483645, 11,10,20012,20057,168,20952,-137417753,20059,200,200,43897,101,58,109,105,110,63,0,2049,5525, 117,45,102,0,1,20059,3,1,-2147483645,11,10,20041,20087,168,20952,-224539325,20089,200,200,44097, 101,58,122,101,114,111,63,0,2049,5525,117,45,102,0,1,20089,3,2049,3470,10, 20070,20115,168,20952,-137390528,20117,200,200,44006,101,58,110,97,110,63,0,2049,5525,117,45, 102,0,1,20117,3,1,-2147483647,11,10,20099,20144,168,20952,-137556320,20146,200,200,43837,101,58, 105,110,102,63,0,2049,5525,117,45,102,0,1,20146,3,1,2147483646,11,10,20128,20174, 168,20952,-315716147,20176,200,200,43515,101,58,45,105,110,102,63,0,2049,5525,117,45,102, 0,1,20176,3,1,-2147483646,11,10,20157,20203,168,20952,-137773972,20205,200,200,43785,101,58,99, 108,105,112,0,2049,5525,117,45,117,0,1,20205,3,1,-2147483645,1,2147483645,2049,3930,10, 20187,20233,168,20952,2090204667,20235,200,21020,44958,102,58,69,49,0,2049,5525,45,124,102,58, 45,110,41,95,101,45,117,110,105,116,95,105,110,95,102,108,111,97,0,1, 20235,3,1793,20263,2049,5525,49,46,101,53,0,1,20265,2049,17695,10,20219,20298,168,20952, 1656704630,20300,200,21191,47499,102,58,115,105,103,110,101,100,45,115,113,114,116,0,2049, 5525,124,102,58,110,45,110,0,1,20300,3,2049,18191,2049,19824,2049,19059,2049,18001,2049, 17657,2049,17869,10,20275,20348,168,20952,265168733,20350,200,21195,47550,102,58,115,105,103,110,101, 100,45,115,113,117,97,114,101,0,2049,5525,124,102,58,110,45,110,0,1,20350, 3,2049,18191,2049,19824,2049,18191,2049,17869,2049,17657,2049,17869,10,20323,20391,168,0,2146687312,0, 200,200,0,102,58,45,115,104,105,102,116,0,2049,20233,2049,17869,10,20373,20414,168, 0,2068416526,0,200,200,0,102,58,43,115,104,105,102,116,0,2049,20233,2049,17899,10, 20396,20438,168,0,-1002717602,0,200,200,0,102,58,43,101,110,99,111,100,101,0,2049, 20298,2049,20391,10,20419,20462,168,0,1580218336,0,200,200,0,102,58,45,101,110,99,111, 100,101,0,2049,18191,2049,19824,2049,20414,2049,18191,2049,17869,2049,17657,2049,17869,10,20323,20493, 168,20952,-98026374,20495,200,21224,47910,102,58,116,111,45,101,0,2049,5525,45,101,124,102, 58,110,45,0,1,20495,3,2049,18191,2049,19347,1793,20517,2049,18224,1,-2147483647,10,1,20512, 2049,3638,2049,18191,2049,19381,1793,20532,2049,18224,1,2147483646,10,1,20527,2049,3638,2049,18191,2049, 19416,1793,20547,2049,18224,1,-2147483646,10,1,20542,2049,3638,2049,20438,2049,19451,2049,17734,2049,20203, 1,-2147483645,1,18224,2049,3274,1,2147483645,1,18224,2049,3274,10,20477,20588,168,20952,-137161766,20590,200, 20984,44057,101,58,116,111,45,102,0,2049,5525,101,45,124,102,58,45,110,0,1, 20590,3,1,-2147483647,1,19208,2049,3274,1,2147483646,1,19252,2049,3274,1,-2147483646,1,19299,2049,3274, 2049,17657,2049,20462,10,20572,20641,168,20952,1059163122,20643,200,21211,47737,102,58,115,116,111,114, 101,0,2049,5525,97,45,124,102,58,110,45,0,1,20643,3,1,20493,2049,2889,16, 10,20624,20677,168,20952,1043212047,20679,200,21094,46299,102,58,102,101,116,99,104,0,2049,5525, 97,45,124,102,58,45,110,0,1,20679,3,15,2049,20588,10,20660,20716,168,20952,-1736964994, 20718,200,200,46055,102,58,100,117,109,112,45,115,116,97,99,107,0,2049,5525,45, 0,1,20718,3,2049,18163,2,1,18544,2049,3153,1793,20741,2049,18574,2049,18191,2049,19093,2049, 12880,10,1,20732,2049,3153,10,20694,20769,168,20952,2104754815,20771,200,200,45998,102,58,100,117, 109,112,45,97,115,116,97,99,107,0,2049,5525,45,0,1,20771,3,2049,18607,2, 1,18574,2049,3153,1793,20794,2049,18191,2049,19093,2049,12880,2049,18544,10,1,20785,2049,3153,10, 20746,20814,168,20952,256140541,20816,200,200,44030,101,58,112,117,116,0,2049,5525,101,45,0, 1,20816,3,1,2147483645,1793,20839,2049,5525,101,58,77,65,88,0,1,20828,2049,12918,10, 1,20826,2049,3274,1,-2147483645,1793,20860,2049,5525,101,58,77,73,78,0,1,20849,2049,12918, 10,1,20847,2049,3274,1,0,1793,20879,2049,5525,101,58,48,0,1,20870,2049,12918,10, 1,20868,2049,3274,1,-2147483647,1793,20900,2049,5525,101,58,78,65,78,0,1,20889,2049,12918, 10,1,20887,2049,3274,1,2147483646,1793,20921,2049,5525,101,58,73,78,70,0,1,20910,2049, 12918,10,1,20908,2049,3274,1,-2147483646,1793,20943,2049,5525,101,58,45,73,78,70,0,1, 20931,2049,12918,10,1,20929,2049,3274,2049,20588,2049,19093,10,105,110,116,101,114,102,97, 99,101,47,102,108,111,97,116,105,110,103,112,111,105,110,116,46,114,101,116, 114,111,0,20952,22437,45,110,0,70,70,45,70,0,70,70,45,70,0,70,70, 45,70,0,45,110,0,70,70,45,0,70,45,0,70,70,45,70,0,45,70, 0,45,102,0,45,110,0,45,110,0,45,70,0,70,45,70,0,70,45,70, 0,70,45,70,0,70,45,70,0,110,108,117,45,0,110,109,45,110,0,70, 45,70,0,70,45,70,0,110,45,109,0,70,45,0,70,70,45,0,70,45, 70,70,0,110,109,45,110,109,110,109,0,70,70,45,0,45,110,0,70,45, 70,0,70,70,45,0,110,45,109,0,70,45,0,110,108,117,45,109,0,70, 70,45,70,0,70,70,45,0,109,110,45,111,0,109,110,45,111,0,70,45, 0,70,45,70,0,70,45,0,78,77,45,77,0,70,71,45,70,71,70,0, 45,70,0,70,45,0,70,70,45,70,0,70,45,0,70,45,0,97,98,99, 45,98,99,97,0,102,45,102,0,70,45,0,70,45,70,0,102,45,102,0, 70,45,70,0,70,45,70,0,102,45,102,0,110,45,0,70,71,45,71,70, 0,70,45,70,0,110,45,0,70,45,0,70,45,0,70,71,45,71,70,71, 0,45,70,0,45,63,0,45,70,0,45,70,0,20799,21276,168,22410,-1289714992,21278,200, 200,49218,102,105,108,101,58,111,112,101,114,97,116,105,111,110,0,2049,5525,45, 110,0,1,21278,3,1,4,2049,12792,2,2049,3517,1793,21333,3,2049,5525,69,114,114, 111,114,58,32,102,105,108,101,115,32,100,101,118,105,99,101,32,110,111,116, 32,102,111,117,110,100,0,1,21296,2049,12918,2049,12863,10,1,21293,2049,3638,2049,12769, 10,21252,0,156,22410,-42586063,21358,200,200,48541,102,105,108,101,58,82,0,45,110,0, 21340,1,156,22410,-42586058,21377,200,200,48633,102,105,108,101,58,87,0,45,110,0,21359, 2,156,22410,-42586080,21396,200,200,48497,102,105,108,101,58,65,0,45,110,0,21378,3, 156,22410,-1405340036,21416,200,200,48583,102,105,108,101,58,82,43,0,45,110,0,21397,21436, 168,22410,-1405821071,21438,200,200,48941,102,105,108,101,58,111,112,101,110,0,2049,5525,115, 109,45,104,0,1,21438,3,1,0,2049,21276,10,21417,21471,168,22410,838181269,21473,200,200, 48676,102,105,108,101,58,99,108,111,115,101,0,2049,5525,104,45,0,1,21473,3, 1,1,2049,21276,10,21451,21503,168,22410,-1405725381,21505,200,200,49290,102,105,108,101,58,114, 101,97,100,0,2049,5525,104,45,99,0,1,21505,3,1,2,2049,21276,10,21484,21537, 168,22410,862108810,21539,200,200,50053,102,105,108,101,58,119,114,105,116,101,0,2049,5525, 99,104,45,0,1,21539,3,1,3,2049,21276,10,21517,21570,168,22410,-1405653136,21572,200,200, 49993,102,105,108,101,58,116,101,108,108,0,2049,5525,104,45,110,0,1,21572,3, 1,4,2049,21276,10,21551,21603,168,22410,-1405689305,21605,200,200,49674,102,105,108,101,58,115, 101,101,107,0,2049,5525,110,104,45,0,1,21605,3,1,5,2049,21276,10,21584,21636, 168,22410,-1405684262,21638,200,200,49732,102,105,108,101,58,115,105,122,101,0,2049,5525,104, 45,110,0,1,21638,3,1,6,2049,21276,10,21617,21671,168,22410,1920889586,21673,200,200,48713, 102,105,108,101,58,100,101,108,101,116,101,0,2049,5525,115,45,0,1,21673,3, 1,7,2049,21276,10,21650,21704,168,22410,841745569,21706,200,200,48809,102,105,108,101,58,102, 108,117,115,104,0,2049,5525,102,45,0,1,21706,3,1,8,2049,21276,10,21684,21742, 168,22410,-983416527,21744,200,200,49409,102,105,108,101,58,114,101,97,100,47,98,121,116, 101,115,0,2049,5525,112,110,102,45,0,1,21744,3,1,9,2049,21276,10,21717,21783, 168,22410,1832429504,21785,200,200,50105,102,105,108,101,58,119,114,105,116,101,47,98,121, 116,101,115,0,2049,5525,112,110,102,45,0,1,21785,3,1,10,2049,21276,10,21757, 21819,168,22410,-1826580883,21821,200,200,49547,102,105,108,101,58,114,101,97,100,47,99,0, 2049,5525,104,45,99,0,1,21821,3,1,11,2049,21276,10,21798,21855,168,22410,-1761342084,21857, 200,200,50221,102,105,108,101,58,119,114,105,116,101,47,99,0,2049,5525,99,104, 45,99,0,1,21857,3,1,12,2049,21276,10,21833,21892,168,22410,996833214,21894,200,200,48736, 102,105,108,101,58,101,120,105,115,116,115,63,0,2049,5525,115,45,102,0,1, 21894,3,1,0,2049,21436,2,2049,3492,1793,21915,2049,21471,2049,3239,10,1,21910,1793,21923, 3,2049,3257,10,1,21919,2049,66,10,21870,21959,168,22410,-1949048916,21961,200,200,49105,102,105, 108,101,58,111,112,101,110,45,102,111,114,45,114,101,97,100,105,110,103,0, 2049,5525,115,45,110,110,0,1,21961,3,1,0,2049,21436,2,2049,21636,4,10,21928, 22008,168,22410,-190176246,22010,200,200,49027,102,105,108,101,58,111,112,101,110,45,102,111, 114,45,97,112,112,101,110,100,0,2049,5525,115,45,110,110,0,1,22010,3,1, 2,2049,21436,2,2049,21636,4,10,21978,22058,168,22410,732146102,22060,200,200,49173,102,105,108, 101,58,111,112,101,110,45,102,111,114,45,119,114,105,116,105,110,103,0,2049, 5525,115,45,110,0,1,22060,3,1,1,2049,21436,10,22027,22085,156,0,193455704,0,200, 200,0,70,73,68,0,0,22072,22100,156,0,2089574848,0,200,200,0,83,105,122,101, 0,0,22086,22117,156,0,-1497417501,0,200,200,0,65,99,116,105,111,110,0,0,22101, 22133,168,0,191272619,0,200,200,0,45,101,111,102,63,0,3841,22085,2049,21570,3841,22100, 13,10,22118,22159,168,0,333634225,0,200,200,0,112,114,101,115,101,114,118,101,0, 1,22085,1793,22170,1,22100,1,27,2049,4871,10,1,22163,2049,4871,10,22027,22199,168,22410, -1853937936,22201,200,200,49348,102,105,108,101,58,114,101,97,100,45,108,105,110,101,0, 2049,5525,102,45,115,0,1,22201,3,2049,2585,4,1,13,2049,21276,2049,2585,10,22175, 22246,168,22410,-1671886311,22248,200,200,48864,102,105,108,101,58,102,111,114,45,101,97,99, 104,45,108,105,110,101,0,2049,5525,115,113,45,0,1,22248,3,1793,22286,4097,22117, 2049,21959,4097,22085,4097,22100,1793,22277,3841,22085,2049,22199,3841,22117,8,2049,22133,10,1,22267, 2049,3064,3841,22085,2049,21471,10,1,22257,2049,22159,10,22218,22304,156,0,193455704,0,200,200, 0,70,73,68,0,0,22218,22325,168,22410,857162517,22327,200,200,49793,102,105,108,101,58, 115,108,117,114,112,0,2049,5525,97,115,45,0,1,22327,3,1793,22361,4,2049,5179, 2049,21959,4097,22304,1793,22352,3841,22304,2049,21503,2049,5063,10,1,22345,2049,3153,3841,22304,2049, 21471,10,1,22336,2049,5209,10,22305,22385,168,22410,-1405677314,22387,200,200,49887,102,105,108,101, 58,115,112,101,119,0,2049,5525,115,115,45,0,1,22387,3,2049,22058,4,1793,22403, 67502597,2049,21537,10,1,22399,2049,5849,2049,21471,10,105,110,116,101,114,102,97,99,101, 47,102,105,108,101,115,121,115,116,101,109,46,114,101,116,114,111,0,22410,23476, 22366,22464,168,23455,1814120867,22466,200,200,52643,105,111,58,117,110,105,120,45,115,121,115, 99,97,108,108,0,2049,5525,110,45,0,1,22466,3,1,8,2049,12792,2,2049,3517, 1793,22520,3,2049,5525,69,114,114,111,114,58,32,85,78,73,88,32,100,101,118, 105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,22484,2049,12918,2049,12863, 10,1,22481,2049,3638,2049,12769,10,22439,22548,168,23455,-1493515992,22550,200,200,64702,117,110,105, 120,58,115,121,115,116,101,109,0,2049,5525,115,45,0,1,22550,3,1,0,2049, 22464,10,22527,22580,168,23455,1646723733,22582,200,200,63854,117,110,105,120,58,102,111,114,107, 0,2049,5525,45,110,0,1,22582,3,1,1,2049,22464,10,22561,22613,168,23455,-1493568520,22615, 200,200,63131,117,110,105,120,58,101,120,101,99,48,0,2049,5525,115,45,0,1, 22615,3,1,2,2049,22464,10,22593,22646,168,23455,-1493568519,22648,200,200,63192,117,110,105,120, 58,101,120,101,99,49,0,2049,5525,115,115,45,0,1,22648,3,1,3,2049,22464, 10,22626,22680,168,23455,-1493568518,22682,200,200,63278,117,110,105,120,58,101,120,101,99,50, 0,2049,5525,115,115,115,45,0,1,22682,3,1,4,2049,22464,10,22660,22715,168,23455, -1493568517,22717,200,200,63369,117,110,105,120,58,101,120,101,99,51,0,2049,5525,115,115, 115,115,45,0,1,22717,3,1,5,2049,22464,10,22695,22750,168,23455,1646697309,22752,200,200, 63612,117,110,105,120,58,101,120,105,116,0,2049,5525,110,45,0,1,22752,3,1, 6,2049,22464,10,22731,22784,168,23455,-1986827424,22786,200,200,64009,117,110,105,120,58,103,101, 116,112,105,100,0,2049,5525,45,110,0,1,22786,3,1,7,2049,22464,10,22763,22816, 168,23455,1647319128,22818,200,200,64792,117,110,105,120,58,119,97,105,116,0,2049,5525,45, 110,0,1,22818,3,1,8,2049,22464,10,22797,22848,168,23455,1646896687,22850,200,200,64048,117, 110,105,120,58,107,105,108,108,0,2049,5525,110,110,45,0,1,22850,3,1,9, 2049,22464,10,22829,22882,168,23455,-1480834715,22884,200,200,64256,117,110,105,120,58,112,111,112, 101,110,0,2049,5525,115,110,45,110,0,1,22884,3,1,10,2049,22464,10,22862,22918, 168,23455,-1637268983,22920,200,200,64108,117,110,105,120,58,112,99,108,111,115,101,0,2049, 5525,110,45,0,1,22920,3,1,11,2049,22464,10,22897,22951,168,23455,-1496516179,22953,200,200, 62991,117,110,105,120,58,99,104,100,105,114,0,2049,5525,115,45,0,1,22953,3, 1,13,2049,22464,10,22931,22985,168,23455,-1986839220,22987,200,200,63932,117,110,105,120,58,103, 101,116,101,110,118,0,2049,5525,115,97,45,0,1,22987,3,1,14,2049,22464,10, 22964,23020,168,23455,-1615645947,23022,200,200,64431,117,110,105,120,58,112,117,116,101,110,118, 0,2049,5525,115,45,0,1,23022,3,1,15,2049,22464,10,22999,23053,168,23455,-1477396740,23055, 200,200,64529,117,110,105,120,58,115,108,101,101,112,0,2049,5525,110,45,0,1, 23055,3,1,16,2049,22464,10,23033,23088,168,23455,1296565974,23090,200,200,63465,117,110,105,120, 58,101,120,101,99,117,116,101,0,2049,5525,115,45,0,1,23090,3,1,17,2049, 22464,10,23066,23120,168,23455,1647076497,23122,200,200,64122,117,110,105,120,58,112,105,112,101, 0,2049,5525,115,45,115,0,1,23122,3,1,0,2049,22882,1,22199,1,22918,2049,2923, 10,23101,23162,168,23455,-1143209138,23164,200,200,63895,117,110,105,120,58,103,101,116,45,99, 119,100,0,2049,5525,45,115,41,0,1,23164,3,2049,5525,112,119,100,0,1,23173, 2049,23120,2049,8555,2049,5525,47,0,1,23185,2049,5825,10,23140,23225,168,23455,-960446853,23227,200, 200,63050,117,110,105,120,58,99,111,117,110,116,45,102,105,108,101,115,45,105, 110,45,99,119,100,0,2049,5525,45,110,0,1,23227,3,2049,5525,108,115,32,45, 49,32,124,32,119,99,32,45,108,0,1,23235,2049,23120,2049,8555,2049,288,10,23192, 23286,168,23455,1737547061,23288,200,200,63675,117,110,105,120,58,102,111,114,45,101,97,99, 104,45,102,105,108,101,0,2049,5525,113,45,0,1,23288,3,2049,5525,108,115,32, 45,49,32,45,112,0,1,23296,1,0,2049,22882,2049,23225,1793,23329,1793,23324,2049,22199, 2049,5466,67502597,8,10,1,23317,2049,2905,10,1,23315,2049,3153,2049,22918,3,10,23258,23352, 168,0,274811347,0,200,200,0,115,116,97,114,116,0,4,2049,5179,1,0,2049,22882, 10,23337,23374,168,0,2090683713,0,200,200,0,114,101,97,100,0,2,2049,21503,2,2049, 5063,2049,3470,10,23360,23399,168,0,-42507930,0,200,200,0,102,105,110,105,115,104,0, 2049,22918,2049,5153,10,23258,23429,168,23455,-1528406284,23431,200,200,64572,117,110,105,120,58,115, 108,117,114,112,45,112,105,112,101,0,2049,5525,97,115,45,110,0,1,23431,3, 1793,23450,2049,23352,1,23374,2049,3093,2049,23399,10,1,23441,2049,5209,10,105,110,116,101, 114,102,97,99,101,47,117,110,105,120,46,114,101,116,114,111,0,23455,23578,23404, 23496,168,23558,-2118913842,23498,200,200,54288,110,58,114,97,110,100,111,109,0,2049,5525,45, 110,0,1,23498,3,1,10,2049,12792,2,2049,3517,1793,23551,3,2049,5525,69,114,114, 111,114,58,32,82,78,71,32,100,101,118,105,99,101,32,110,111,116,32,102, 111,117,110,100,0,1,23516,2049,12918,2049,12863,10,1,23513,2049,3638,2049,12769,10,105, 110,116,101,114,102,97,99,101,47,114,110,103,46,114,101,116,114,111,0,23558, 24157,23478,23605,168,24135,198751996,23607,200,200,39417,99,108,111,99,107,58,111,112,101,114, 97,116,105,111,110,0,2049,5525,110,45,0,1,23607,3,1,5,2049,12792,2,2049, 3517,1793,23662,3,2049,5525,69,114,114,111,114,58,32,99,108,111,99,107,32,100, 101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,23625,2049,12918, 2049,12863,10,1,23622,2049,3638,2049,12769,10,23580,23694,168,24135,658409087,23696,200,200,39559,99, 108,111,99,107,58,116,105,109,101,115,116,97,109,112,0,2049,5525,45,110,0, 1,23696,3,1,0,2049,23605,10,23669,23726,168,24135,-115155671,23728,200,200,39177,99,108,111, 99,107,58,100,97,121,0,2049,5525,45,110,0,1,23728,3,1,1,2049,23605,10, 23707,23760,168,24135,-839305775,23762,200,200,39345,99,108,111,99,107,58,109,111,110,116,104, 0,2049,5525,45,110,0,1,23762,3,1,2,2049,23605,10,23739,23793,168,24135,495588508,23795, 200,200,39872,99,108,111,99,107,58,121,101,97,114,0,2049,5525,45,110,0,1, 23795,3,1,3,2049,23605,10,23773,23826,168,24135,494989129,23828,200,200,39201,99,108,111,99, 107,58,104,111,117,114,0,2049,5525,45,110,0,1,23828,3,1,4,2049,23605,10, 23806,23861,168,24135,-1934400739,23863,200,200,39272,99,108,111,99,107,58,109,105,110,117,116, 101,0,2049,5525,45,110,0,1,23863,3,1,5,2049,23605,10,23839,23896,168,24135,-1704734105, 23898,200,200,39486,99,108,111,99,107,58,115,101,99,111,110,100,0,2049,5525,45, 110,0,1,23898,3,1,6,2049,23605,10,23874,23932,168,24135,-1548566609,23934,200,200,39676,99, 108,111,99,107,58,117,116,99,58,100,97,121,0,2049,5525,45,110,0,1,23934, 3,1,7,2049,23605,10,23909,23970,168,24135,1544278487,23972,200,200,39773,99,108,111,99,107, 58,117,116,99,58,109,111,110,116,104,0,2049,5525,45,110,0,1,23972,3,1, 8,2049,23605,10,23945,24007,168,24135,437667810,24009,200,200,39840,99,108,111,99,107,58,117, 116,99,58,121,101,97,114,0,2049,5525,45,110,0,1,24009,3,1,9,2049,23605, 10,23983,24044,168,24135,437068431,24046,200,200,39707,99,108,111,99,107,58,117,116,99,58, 104,111,117,114,0,2049,5525,45,110,0,1,24046,3,1,10,2049,23605,10,24020,24083, 168,24135,-585531421,24085,200,200,39739,99,108,111,99,107,58,117,116,99,58,109,105,110, 117,116,101,0,2049,5525,45,110,0,1,24085,3,1,11,2049,23605,10,24057,24122,168, 24135,-355864787,24124,200,200,39806,99,108,111,99,107,58,117,116,99,58,115,101,99,111, 110,100,0,2049,5525,45,110,0,1,24124,3,1,12,2049,23605,10,105,110,116,101, 114,102,97,99,101,47,99,108,111,99,107,46,114,101,116,114,111,0,24135,24681, 24096,24185,168,0,1615087013,0,200,200,0,115,99,114,105,112,116,58,111,112,101,114, 97,116,105,111,110,0,1,9,2049,12792,2,2049,3517,1793,24238,3,2049,5525,69,114, 114,111,114,58,32,115,99,114,105,112,116,105,110,103,32,100,101,118,105,99, 101,32,110,111,116,32,102,111,117,110,100,0,1,24197,2049,12918,2049,12863,10,1, 24194,2049,3638,2049,12769,10,24096,24271,168,24655,2076096266,24273,200,200,59876,115,99,114,105,112, 116,58,97,114,103,117,109,101,110,116,115,0,2049,5525,45,110,0,1,24273,3, 1,0,2049,24185,10,24245,24313,168,24655,-968823164,24315,200,200,60292,115,99,114,105,112,116, 58,103,101,116,45,97,114,103,117,109,101,110,116,0,2049,5525,110,45,115,0, 1,24315,3,2049,5500,4,1,1,2049,24185,10,24284,24347,168,24655,-1640583287,24349,200,200,52068, 105,110,99,108,117,100,101,0,2049,5525,115,45,0,1,24349,3,1,2,2049,24185, 10,24330,24381,168,24655,-352813579,24383,200,200,60460,115,99,114,105,112,116,58,110,97,109, 101,0,2049,5525,45,115,0,1,24383,3,2049,5500,1,3,2049,24185,10,24360,24425,168, 24655,1275782788,24427,200,200,59930,115,99,114,105,112,116,58,99,117,114,114,101,110,116, 45,102,105,108,101,0,2049,5525,45,115,0,1,24427,3,2049,5500,1,4,2049,24185, 10,24396,24469,180,24655,1275998476,24471,200,200,60057,115,99,114,105,112,116,58,99,117,114, 114,101,110,116,45,108,105,110,101,0,2049,5525,45,110,0,1,24471,3,1,5, 2049,24185,2049,156,10,24440,24514,168,24655,-1015360939,24516,200,200,60351,115,99,114,105,112,116, 58,105,103,110,111,114,101,45,116,111,45,101,111,108,0,2049,5525,45,0,1, 24516,3,1,6,2049,24185,10,24484,24556,168,24655,465657533,24558,200,200,59751,115,99,114,105, 112,116,58,97,98,111,114,116,45,105,110,99,108,117,100,101,0,2049,5525,45, 0,1,24558,3,1,7,2049,24185,10,24526,24583,168,24655,252833149,24585,200,200,35769,97,98, 111,114,116,0,2049,5525,45,0,1,24585,3,1,149,2049,4827,1,8,2049,24185,10, 24568,24633,168,24655,1895981246,24635,200,200,60214,115,99,114,105,112,116,58,99,117,114,114, 101,110,116,45,108,105,110,101,45,116,101,120,116,0,2049,5525,45,115,0,1, 24635,3,2049,5500,1793,24650,1,9,2049,24185,10,1,24645,2049,2905,10,105,110,116,101, 114,102,97,99,101,47,115,99,114,105,112,116,105,110,103,46,114,101,116,114, 111,0,24655,25287,24599,24709,168,25289,321067545,24711,200,200,62012,115,111,99,107,101,116,58, 111,112,101,114,97,116,105,111,110,0,2049,5525,110,45,0,1,24711,3,1,7, 2049,12792,2,2049,3517,1793,24874,3,2049,5525,69,114,114,111,114,58,32,115,111,99, 107,101,116,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100, 0,1,24729,2049,12918,2049,12863,2049,5525,83,101,101,32,104,116,116,112,115,58,47, 47,114,101,116,114,111,102,111,114,116,104,46,111,114,103,47,115,117,112,112, 111,114,116,47,50,48,50,50,46,49,47,83,79,67,75,69,84,83,46,109, 100,0,1,24768,2049,12918,2049,12863,2049,5525,102,111,114,32,105,110,115,116,114,117, 99,116,105,111,110,115,32,111,110,32,101,110,97,98,108,105,110,103,32,115, 111,99,107,101,116,115,46,0,1,24829,2049,12918,2049,12863,10,1,24726,2049,3638,2049, 12769,10,24683,24911,168,25263,2071663234,24913,200,200,61722,115,111,99,107,101,116,58,103,101, 116,104,111,115,116,98,121,110,97,109,101,0,2049,5525,97,115,45,0,1,24913, 3,1,0,2049,24709,10,24881,24948,168,25263,-196324068,24950,200,200,61701,115,111,99,107,101, 116,58,99,114,101,97,116,101,0,2049,5525,45,110,0,1,24950,3,1,1,2049, 24709,10,24925,24982,168,25263,-773240955,24984,200,200,61398,115,111,99,107,101,116,58,98,105, 110,100,0,2049,5525,115,110,45,110,0,1,24984,3,1,2,2049,24709,10,24961,25020, 168,25263,145744503,25022,200,200,61856,115,111,99,107,101,116,58,108,105,115,116,101,110, 0,2049,5525,110,110,45,110,110,0,1,25022,3,1,3,2049,24709,10,24997,25059,168, 25263,-292451304,25061,200,200,61329,115,111,99,107,101,116,58,97,99,99,101,112,116,0, 2049,5525,110,45,110,110,0,1,25061,3,1,4,2049,24709,10,25036,25098,168,25263,2004958354, 25100,200,200,61612,115,111,99,107,101,116,58,99,111,110,110,101,99,116,0,2049, 5525,110,45,110,110,0,1,25100,3,1,5,2049,24709,10,25074,25134,168,25263,-772634382,25136, 200,200,62252,115,111,99,107,101,116,58,115,101,110,100,0,2049,5525,115,110,45, 110,110,0,1,25136,3,1,6,2049,24709,10,25113,25171,168,25263,-772670664,25173,200,200,62082, 115,111,99,107,101,116,58,114,101,99,118,0,2049,5525,97,110,110,45,110,110, 0,1,25173,3,1,7,2049,24709,10,25150,25210,168,25263,254147678,25212,200,200,61511,115,111, 99,107,101,116,58,99,108,111,115,101,0,2049,5525,110,45,0,1,25212,3,1, 8,2049,24709,10,25188,25249,168,25263,1248070378,25251,200,200,61527,115,111,99,107,101,116,58, 99,111,110,102,105,103,117,114,101,0,2049,5525,115,115,45,0,1,25251,3,1, 9,2049,24709,10,105,110,116,101,114,102,97,99,101,47,115,111,99,107,101,116, 115,46,114,101,116,114,111,0,25263,25306,115,111,99,107,101,116,58,111,112,101, 114,97,116,105,111,110,0,25289,25614,25223,25325,168,25588,-1650400160,25327,200,200,52314,105,111, 58,99,111,114,101,0,2049,5525,110,45,0,1,25327,3,1,8000,2049,12792,2049,12769, 10,25308,25359,168,25588,-1507548164,25361,200,200,40579,99,111,114,101,58,105,110,105,116,0, 2049,5525,110,45,0,1,25361,3,1,0,2049,25325,10,25340,25392,168,25588,1802584310,25394,200, 200,40907,99,111,114,101,58,115,116,97,114,116,0,2049,5525,97,110,45,0,1, 25394,3,1,1,2049,25325,10,25372,25426,168,25588,1798365542,25428,200,200,40707,99,111,114,101, 58,112,97,117,115,101,0,2049,5525,110,45,0,1,25428,3,1,2,2049,25325,10, 25406,25467,168,25588,-911635434,25469,200,200,40739,99,111,114,101,58,112,97,117,115,101,45, 99,117,114,114,101,110,116,0,2049,5525,45,0,1,25469,3,1,3,2049,25325,10, 25439,25500,168,25588,-700534119,25502,200,200,40831,99,111,114,101,58,114,101,115,117,109,101, 0,2049,5525,110,45,0,1,25502,3,1,4,2049,25325,10,25479,25536,168,25588,895714865,25538, 200,200,40779,99,111,114,101,58,114,101,97,100,47,114,101,103,0,2049,5525,110, 45,118,0,1,25538,3,1,5,2049,25325,10,25513,25574,168,25588,-1200921056,25576,200,200,40979, 99,111,114,101,58,119,114,105,116,101,47,114,101,103,0,2049,5525,118,110,45, 0,1,25576,3,1,6,2049,25325,10,105,110,116,101,114,102,97,99,101,47,109, 117,108,116,105,99,111,114,101,46,114,101,116,114,111,0,25588,25823,25550,25639,168, 25803,2042654789,25641,200,200,48450,102,102,105,58,111,112,101,114,97,116,105,111,110,0, 2049,5525,110,45,63,0,1,25641,3,1,8100,2049,12792,2,2049,3517,1793,25695,3,2049, 5525,69,114,114,111,114,58,32,70,70,73,32,100,101,118,105,99,101,32,110, 111,116,32,102,111,117,110,100,0,1,25660,2049,12918,2049,12863,10,1,25657,2049,3638, 2049,12769,10,25616,25720,168,25803,1122521030,25722,200,200,48412,102,102,105,58,111,112,101,110, 0,2049,5525,115,45,110,0,1,25722,3,1,0,2049,25639,10,25702,25755,168,25803,-1453717192, 25757,200,200,48335,102,102,105,58,109,97,112,45,115,121,109,0,2049,5525,115,110, 45,110,0,1,25757,3,1,1,2049,25639,10,25734,25790,168,25803,-1876846240,25792,200,200,48253, 102,102,105,58,105,110,118,111,107,101,0,2049,5525,110,45,0,1,25792,3,1, 2,2049,25639,10,105,110,116,101,114,102,97,99,101,47,102,102,105,46,114,101, 116,114,111,0,25803,26313,25770,25845,168,26288,-931970681,25847,200,200,65061,117,110,115,105,103, 110,101,100,58,43,0,2049,5525,110,110,45,110,0,1,25847,3,1,0,1,8101, 2049,12792,2049,12769,17,10,25825,25885,168,26288,-931970679,25887,200,200,65101,117,110,115,105,103, 110,101,100,58,45,0,2049,5525,110,110,45,110,0,1,25887,3,1,0,1,8101, 2049,12792,2049,12769,18,10,25865,25925,168,26288,-931970682,25927,200,200,64914,117,110,115,105,103, 110,101,100,58,42,0,2049,5525,110,110,45,110,0,1,25927,3,1,0,1,8101, 2049,12792,2049,12769,19,10,25905,25968,168,26288,-75122677,25970,200,200,65242,117,110,115,105,103, 110,101,100,58,47,109,111,100,0,2049,5525,110,110,45,110,110,0,1,25970,3, 1,0,1,8101,2049,12792,2049,12769,20,10,25945,26011,168,26288,-1303722799,26013,200,200,65319,117, 110,115,105,103,110,101,100,58,101,113,63,0,2049,5525,110,110,45,102,0,1, 26013,3,1,0,1,8101,2049,12792,2049,12769,11,10,25989,26054,168,26288,-75203234,26056,200,200, 65148,117,110,115,105,103,110,101,100,58,45,101,113,63,0,2049,5525,110,110,45, 102,0,1,26056,3,1,0,1,8101,2049,12792,2049,12769,12,10,26031,26096,168,26288,-1303715077, 26098,200,200,65488,117,110,115,105,103,110,101,100,58,108,116,63,0,2049,5525,110, 110,45,102,0,1,26098,3,1,0,1,8101,2049,12792,2049,12769,13,10,26074,26138,168, 26288,-1303720522,26140,200,200,65407,117,110,115,105,103,110,101,100,58,103,116,63,0,2049, 5525,110,110,45,102,0,1,26140,3,1,0,1,8101,2049,12792,2049,12769,14,10,26116, 26182,168,26288,1896375546,26184,200,200,65566,117,110,115,105,103,110,101,100,58,115,104,105, 102,116,0,2049,5525,110,110,45,110,0,1,26184,3,1,0,1,8101,2049,12792,2049, 12769,24,10,26158,26226,168,26288,1807759541,26228,200,200,64959,117,110,115,105,103,110,101,100, 58,42,47,109,111,100,0,2049,5525,110,110,110,45,110,110,0,1,26228,3,1, 1,1,0,1,8101,2049,12792,2,2049,12769,2049,12769,10,26202,26267,168,26288,185772414,26269,200, 200,28059,42,47,109,111,100,0,2049,5525,110,110,110,45,110,110,0,1,26269,3, 1,1,1,8101,2049,12792,2049,12769,10,105,110,116,101,114,102,97,99,101,47,117, 110,115,105,103,110,101,100,46,114,101,116,114,111,0,26288,26461,26252,26337,168,26438, -1827032295,26339,200,200,42757,100,58,117,115,101,45,104,97,115,104,101,115,0,2049,5525, 45,0,1,26339,3,1,29,1,258,1,5,18,16,1793,26358,2049,188,15,10,1, 26354,1,258,1,8,18,16,1,2049,1,258,16,1,5994,1,258,2049,3953,16,10, 26315,26402,168,26438,1901154183,26404,200,200,42813,100,58,117,115,101,45,115,116,114,105,110, 103,115,0,2049,5525,45,0,1,26404,3,1,118,1,258,1,5,18,16,1,198, 1,258,1,8,18,16,1,0,1,258,16,1,0,1,258,2049,3953,16,10,105, 110,116,101,114,102,97,99,101,47,102,117,116,117,114,101,46,114,101,116,114, 111,0,26438,26621,26379,26485,168,0,1388979734,0,200,200,0,98,108,111,99,107,58,105, 110,118,111,107,101,0,1,3,2049,12792,2049,12769,10,26379,26512,168,26598,427535558,26514,200, 200,36567,98,108,111,99,107,58,114,101,97,100,0,2049,5525,110,97,45,0,1, 26514,3,1,0,2049,26485,10,26492,26547,168,26598,1230177653,26549,200,200,36690,98,108,111,99, 107,58,119,114,105,116,101,0,2049,5525,110,97,45,0,1,26549,3,1,1,2049, 26485,10,26526,26585,168,26598,-1436880765,26587,200,200,36643,98,108,111,99,107,58,115,101,116, 45,102,105,108,101,0,2049,5525,115,45,0,1,26587,3,1,2,2049,26485,10,105, 110,116,101,114,102,97,99,101,47,98,108,111,99,107,115,46,114,101,116,114, 111,0,26598,27696,26561,26648,168,26914,-686480257,26650,200,200,44449,101,114,114,58,115,101,116, 45,104,97,110,100,108,101,114,0,2049,5525,110,110,45,0,1,26650,3,1,1234, 2049,12792,2,2049,3517,1793,26715,3,2049,5525,69,114,114,111,114,58,32,101,114,114, 111,114,32,104,97,110,100,108,105,110,103,32,100,101,118,105,99,101,32,110, 111,116,32,102,111,117,110,100,0,1,26669,2049,12918,2049,12863,10,1,26666,2049,3638, 1,0,4,2049,12769,10,26623,26742,168,26914,1955994964,26744,200,200,44281,101,114,114,58,100, 115,117,0,2049,5525,45,0,1,26744,3,2049,12979,2049,12863,2049,5525,69,82,82,79, 82,58,32,68,83,85,58,32,68,65,84,65,32,83,84,65,67,75,32,85, 78,68,69,82,70,76,79,87,0,1,26755,2049,12918,2049,12863,2049,13112,10,26725,26814, 168,26914,1955994958,26816,200,200,44243,101,114,114,58,100,115,111,0,2049,5525,45,0,1, 26816,3,2049,12979,2049,12863,2049,5525,69,82,82,79,82,58,32,68,83,79,58,32, 68,65,84,65,32,83,84,65,67,75,32,79,86,69,82,70,76,79,87,0, 1,26827,2049,12918,2049,12863,2049,13112,10,26797,26894,168,26914,700502841,26896,200,200,44394,101,114, 114,58,115,101,116,45,100,101,102,97,117,108,116,115,0,2049,5525,45,0,1, 26896,3,1,26742,1,1,2049,26648,1,26814,1,2,2049,26648,10,105,110,116,101,114, 102,97,99,101,47,101,114,114,111,114,46,114,101,116,114,111,0,26868,26961,168, 0,-1638437621,26963,200,200,0,105,111,99,116,108,58,111,112,101,114,97,116,105,111, 110,0,2049,5525,110,45,0,1,26963,3,1,14,2049,12792,2,2049,3517,1793,27018,3, 2049,5525,69,114,114,111,114,58,32,105,111,99,116,108,32,100,101,118,105,99, 101,32,110,111,116,32,102,111,117,110,100,0,1,26981,2049,12918,2049,12863,10,1, 26978,2049,3638,2049,12769,10,26936,27050,168,0,-1756413478,27052,200,200,0,105,111,99,116,108, 58,116,101,114,109,45,115,105,122,101,0,2049,5525,45,110,110,0,1,27052,3, 1,0,2049,26961,10,27025,27090,168,0,-1813451557,27092,200,200,0,105,111,99,116,108,58, 115,101,116,45,99,98,114,101,97,107,0,2049,5525,45,0,1,27092,3,1,1, 2049,26961,10,27064,27128,168,0,-1461233020,27130,200,200,0,105,111,99,116,108,58,115,101, 116,45,108,98,114,101,97,107,0,2049,5525,45,0,1,27130,3,1,2,2049,26961, 10,27102,27166,168,0,-193579625,27168,200,200,0,105,111,99,116,108,58,115,97,118,101, 45,115,116,97,116,101,0,2049,5525,45,0,1,27168,3,1,3,2049,26961,10,27140, 27207,168,0,-2031814164,27209,200,200,0,105,111,99,116,108,58,114,101,115,116,111,114, 101,45,115,116,97,116,101,0,2049,5525,45,0,1,27209,3,1,4,2049,26961,10, 1793,27240,1,202,1,2,17,8,2049,2100,2049,198,3841,13770,8,2049,2100,2049,188,16, 10,1,27221,27178,27256,168,27672,2089149710,27258,200,200,31764,72,79,77,69,0,2049,5525,45, 115,0,1,27258,3,2049,2585,1,4096,17,10,37,115,47,46,99,111,110,102,105, 103,47,114,101,116,114,111,102,111,114,116,104,47,108,105,98,114,97,114,121, 47,37,115,46,114,101,116,114,111,0,27242,27270,156,27672,1492345816,27336,200,200,52713,108, 105,98,114,97,114,121,58,46,67,79,78,70,73,71,0,45,115,0,46,47, 108,105,98,114,97,114,121,47,37,115,46,114,101,116,114,111,0,27309,27337,156, 27672,-516195150,27379,200,200,52914,108,105,98,114,97,114,121,58,67,87,68,0,45,115, 0,27356,27401,168,27672,-516159214,27403,200,200,53012,108,105,98,114,97,114,121,58,99,119, 100,0,2049,5525,115,45,115,0,1,27403,3,1,27337,2049,9899,10,27380,27440,168,27672, -1511153512,27442,200,200,52796,108,105,98,114,97,114,121,58,46,99,111,110,102,105,103, 0,2049,5525,45,115,0,1,27442,3,2049,5525,72,79,77,69,0,1,27450,2049,27256, 2049,22985,2049,27256,1,27270,2049,9899,10,27415,27494,168,27672,-666395371,27496,200,200,53077,108,105, 98,114,97,114,121,58,102,105,108,101,110,97,109,101,0,2049,5525,115,45,115, 0,1,27496,3,2,2049,27401,2,2049,21892,1,2816,2049,3638,3,2049,27440,2,2049,21892, 1793,27522,10,1,27521,2049,3638,3,2049,5500,10,27468,27557,168,27672,-916721742,27559,200,200,52978, 108,105,98,114,97,114,121,58,99,111,110,116,97,105,110,115,63,0,2049,5525, 115,45,102,0,1,27559,3,1,27401,1,27440,2049,2923,1,21892,2049,2961,22,10,27530, 27600,168,27672,146929844,27602,200,200,53138,108,105,98,114,97,114,121,58,108,111,97,100, 0,2049,5525,115,45,0,1,27602,3,2,2049,27557,1793,27618,2049,27494,2049,24347,10,1, 27613,1793,27667,2049,5525,69,82,82,79,82,58,32,76,105,98,114,97,114,121,32, 96,37,115,96,32,119,97,115,32,110,111,116,32,102,111,117,110,100,0,1, 27624,2049,9899,2049,12918,2049,12863,10,1,27622,2049,66,10,105,110,116,101,114,102,97, 99,101,47,108,105,98,114,97,114,121,46,114,101,116,114,111,0,27672,13989,27578, 27725,168,0,-1980891296,27727,200,200,27756,100,58,115,101,116,45,100,101,115,99,114,105, 112,116,105,111,110,0,2049,5525,115,115,45,0,1,27727,3,2049,258,2,2049,3492, 1793,27749,2049,196,1,5557,2049,2889,16,10,1,27741,1,2837,2049,66,10,97,100,100, 32,97,32,100,101,115,99,114,105,112,116,105,111,110,32,116,111,32,97,32, 119,111,114,100,0,27698,27809,168,0,-562402433,27811,200,200,27825,97,100,100,45,100,101, 115,99,114,105,112,116,105,111,110,0,2049,5525,115,45,0,1,27811,3,2049,5557, 2049,2100,2049,196,16,10,97,100,100,32,97,32,100,101,115,99,114,105,112,116, 105,111,110,32,102,111,114,32,116,104,101,32,109,111,115,116,32,114,101,99, 101,110,116,108,121,32,100,101,102,105,110,101,100,32,119,111,114,100,0,82, 101,116,117,114,110,32,65,83,67,73,73,58,78,85,76,32,40,48,41,46, 0,82,101,116,117,114,110,32,97,110,32,101,109,112,116,121,32,115,116,114, 105,110,103,46,0,80,114,111,118,105,100,101,32,97,32,118,105,115,117,97, 108,32,105,110,100,105,99,97,116,105,111,110,32,111,102,32,97,32,99,111, 100,101,32,103,114,111,117,112,46,0,80,114,111,118,105,100,101,32,97,32, 118,105,115,117,97,108,32,105,110,100,105,99,97,116,105,111,110,32,111,102, 32,97,32,99,111,100,101,32,103,114,111,117,112,46,0,77,117,108,116,105, 112,108,121,32,96,110,49,96,32,98,121,32,96,110,50,96,32,97,110,100, 32,114,101,116,117,114,110,32,116,104,101,32,114,101,115,117,108,116,46,0, 77,117,108,116,105,112,108,121,32,96,120,96,32,98,121,32,96,121,96,32, 97,110,100,32,116,104,101,110,32,100,105,118,105,100,101,32,98,121,32,96, 122,96,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,105,110, 116,101,103,101,114,32,112,97,114,116,32,111,102,32,116,104,101,32,113,117, 111,116,105,101,110,116,32,97,110,100,32,114,101,109,97,105,110,100,101,114, 46,0,65,100,100,32,96,110,49,96,32,116,111,32,96,110,50,96,32,97, 110,100,32,114,101,116,117,114,110,32,116,104,101,32,114,101,115,117,108,116, 46,0,83,116,111,114,101,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,118,97,108,117,101,32,105,110,116,111,32,116,104,101,32,109,101,109, 111,114,121,32,97,116,32,96,104,101,114,101,96,32,97,110,100,32,105,110, 99,114,101,109,101,110,116,32,96,72,101,97,112,96,32,98,121,32,49,46, 0,83,117,98,116,114,97,99,116,32,96,110,50,96,32,102,114,111,109,32, 96,110,49,96,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, 114,101,115,117,108,116,46,0,83,119,105,116,99,104,32,116,111,32,116,104, 101,32,101,120,112,111,115,101,100,32,40,112,117,98,108,105,99,41,32,112, 111,114,116,105,111,110,32,111,102,32,97,32,108,101,120,105,99,97,108,32, 110,97,109,101,115,112,97,99,101,46,0,67,111,109,112,97,114,101,32,116, 119,111,32,118,97,108,117,101,115,32,102,111,114,32,105,110,101,113,117,97, 108,105,116,121,46,32,82,101,116,117,114,110,115,32,96,84,82,85,69,96, 32,105,102,32,116,104,101,121,32,97,114,101,32,110,111,116,32,101,113,117, 97,108,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119, 105,115,101,46,0,69,120,101,99,117,116,101,32,116,104,101,32,113,117,111, 116,97,116,105,111,110,32,105,102,32,116,104,101,32,102,108,97,103,32,105, 115,32,96,70,65,76,83,69,96,46,0,69,120,101,99,117,116,101,32,116, 104,101,32,113,117,111,116,97,116,105,111,110,32,105,102,32,116,104,101,32, 102,108,97,103,32,105,115,32,96,70,65,76,83,69,96,46,32,73,102,32, 102,97,108,115,101,44,32,97,108,115,111,32,101,120,105,116,32,116,104,101, 32,119,111,114,100,46,0,68,105,118,105,100,101,32,96,110,96,32,98,121, 32,96,109,96,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, 105,110,116,101,103,101,114,32,112,97,114,116,32,111,102,32,116,104,101,32, 113,117,111,116,105,101,110,116,46,0,68,105,118,105,100,101,32,96,110,96, 32,98,121,32,96,109,96,32,97,110,100,32,114,101,116,117,114,110,32,116, 104,101,32,105,110,116,101,103,101,114,32,112,97,114,116,32,111,102,32,116, 104,101,32,113,117,111,116,105,101,110,116,32,97,110,100,32,114,101,109,97, 105,110,100,101,114,46,0,73,102,32,96,110,96,32,105,115,32,122,101,114, 111,44,32,100,114,111,112,32,96,110,96,32,97,110,100,32,101,120,105,116, 32,116,104,101,32,99,117,114,114,101,110,116,32,119,111,114,100,46,32,73, 102,32,110,111,110,45,122,101,114,111,44,32,108,101,97,118,101,32,96,110, 96,32,97,108,111,110,101,32,97,110,100,32,97,108,108,111,119,32,101,120, 101,99,117,116,105,111,110,32,116,111,32,99,111,110,116,105,110,117,101,46, 0,69,110,100,32,116,104,101,32,99,117,114,114,101,110,116,32,100,101,102, 105,110,105,116,105,111,110,46,0,68,117,112,108,105,99,97,116,101,32,116, 111,112,32,118,97,108,117,101,32,111,110,32,115,116,97,99,107,32,105,102, 32,110,111,116,32,122,101,114,111,46,32,73,102,32,122,101,114,111,44,32, 100,111,32,110,111,116,104,105,110,103,46,0,67,111,110,115,116,97,110,116, 46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105,99, 32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97,110, 116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105, 99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97, 110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102, 105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116, 97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105, 102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115, 116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99, 105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110, 115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101, 99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111, 110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112, 101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67, 111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115, 112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0, 67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32, 115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46, 0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111, 32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101, 46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116, 111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100, 101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32, 116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111, 100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115, 32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99, 111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114, 115,32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32, 99,111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101, 114,115,32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73, 32,99,111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102, 101,114,115,32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73, 73,32,99,111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101, 102,101,114,115,32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67, 73,73,32,99,111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82, 101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105,99,32,65,83, 67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97,110,116,46,32, 82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105,99,32,65, 83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97,110,116,46, 32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105,99,32, 65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97,110,116, 46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105,99, 32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97,110, 116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102,105, 99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116,97, 110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105,102, 105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115,116, 97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99,105, 102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110,115, 116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101,99, 105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111,110, 115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112,101, 99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67,111, 110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115,112, 101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0,67, 111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32,115, 112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46,0, 67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111,32, 115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101,46, 0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116,111, 32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100,101, 46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32,116, 111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111,100, 101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115,32, 116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99,111, 100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114,115, 32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32,99, 111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,102,101,114, 115,32,116,111,32,115,112,101,99,105,102,105,99,32,65,83,67,73,73,32, 99,111,100,101,46,0,67,111,110,115,116,97,110,116,46,32,82,101,116,117, 114,110,32,97,32,98,117,105,108,100,32,105,100,101,110,116,105,102,105,101, 114,46,32,85,115,101,32,97,108,111,110,103,32,119,105,116,104,32,118,101, 114,115,105,111,110,32,116,111,32,105,100,101,110,116,105,102,121,32,97,110, 32,105,109,97,103,101,46,0,86,97,114,105,97,98,108,101,46,32,72,111, 108,100,115,32,116,104,101,32,99,117,114,114,101,110,116,32,110,117,109,101, 114,105,99,32,98,97,115,101,46,32,66,97,115,101,32,109,117,115,116,32, 98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32,111,102,32,50, 45,49,54,46,0,86,97,114,105,97,98,108,101,46,32,72,111,108,100,115, 32,116,104,101,32,99,111,109,112,105,108,101,114,32,115,116,97,116,101,46, 32,73,102,32,84,82,85,69,44,32,116,104,101,32,99,111,109,112,105,108, 101,114,32,105,115,32,97,99,116,105,118,101,46,32,73,102,32,70,65,76, 83,69,44,32,105,116,32,105,115,32,110,111,116,46,0,82,101,116,117,114, 110,32,100,101,118,105,99,101,32,73,68,32,102,111,114,32,98,108,111,99, 107,32,115,117,112,112,111,114,116,46,0,82,101,116,117,114,110,32,100,101, 118,105,99,101,32,73,68,32,102,111,114,32,99,108,111,99,107,32,119,111, 114,100,115,46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73, 68,32,102,111,114,32,101,114,114,111,114,32,104,97,110,100,108,101,114,115, 46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68,32,102, 111,114,32,102,111,114,101,105,103,110,32,102,117,110,99,116,105,111,110,32, 105,110,116,101,114,102,97,99,101,46,0,82,101,116,117,114,110,32,100,101, 118,105,99,101,32,73,68,32,102,111,114,32,102,105,108,101,115,121,115,116, 101,109,32,97,99,99,101,115,115,46,0,82,101,116,117,114,110,32,100,101, 118,105,99,101,32,73,68,32,102,111,114,32,102,108,111,97,116,105,110,103, 32,112,111,105,110,116,46,0,82,101,116,117,114,110,32,100,101,118,105,99, 101,32,73,68,32,102,111,114,32,105,109,97,103,101,32,119,114,105,116,101, 114,46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68,32, 102,111,114,32,85,110,105,120,32,73,79,67,84,76,32,105,110,116,101,114, 102,97,99,101,46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32, 73,68,32,102,111,114,32,75,101,121,98,111,97,114,100,32,105,110,112,117, 116,46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68,32, 102,111,114,32,109,101,109,111,114,121,32,97,108,108,111,99,97,116,111,114, 46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68,32,102, 111,114,32,109,117,108,116,105,99,111,114,101,32,115,117,112,112,111,114,116, 46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68,32,102, 111,114,32,79,117,116,112,117,116,32,100,101,118,105,99,101,46,0,82,101, 115,101,114,118,101,100,32,100,101,118,105,99,101,32,73,68,46,0,82,101, 115,101,114,118,101,100,32,100,101,118,105,99,101,32,73,68,46,0,82,101, 115,101,114,118,101,100,32,100,101,118,105,99,101,32,73,68,46,0,82,101, 115,101,114,118,101,100,32,100,101,118,105,99,101,32,73,68,46,0,82,101, 116,117,114,110,32,100,101,118,105,99,101,32,73,68,32,102,111,114,32,114, 97,110,100,111,109,32,110,117,109,98,101,114,32,103,101,110,101,114,97,116, 111,114,46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68, 32,102,111,114,32,115,99,114,105,112,116,105,110,103,32,115,117,112,112,111, 114,116,46,0,82,101,116,117,114,110,32,100,101,118,105,99,101,32,73,68, 32,102,111,114,32,115,111,99,107,101,116,115,46,0,82,101,116,117,114,110, 32,100,101,118,105,99,101,32,73,68,32,102,111,114,32,117,110,105,120,32, 115,121,115,99,97,108,108,46,0,82,101,116,117,114,110,32,100,101,118,105, 99,101,32,73,68,32,102,111,114,32,117,110,115,105,103,110,101,100,32,109, 97,116,104,115,46,0,86,97,114,105,97,98,108,101,46,32,72,111,108,100, 115,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,109, 111,115,116,32,114,101,99,101,110,116,32,100,105,99,116,105,111,110,97,114, 121,32,104,101,97,100,101,114,46,0,85,115,101,100,32,116,111,32,100,101, 110,111,116,101,32,116,104,101,32,101,110,100,32,111,102,32,97,32,108,105, 110,107,101,100,32,108,105,115,116,46,32,84,104,101,32,108,97,115,116,32, 99,111,110,115,32,119,105,108,108,32,104,97,118,101,32,116,104,101,32,99, 100,114,32,112,111,105,110,116,32,116,111,32,116,104,105,115,32,97,100,100, 114,101,115,115,46,0,67,111,110,115,116,97,110,116,46,32,82,101,116,117, 114,110,115,32,116,104,101,32,108,97,115,116,32,97,100,100,114,101,115,115, 97,98,108,101,32,109,101,109,111,114,121,32,97,100,100,114,101,115,115,46, 0,82,101,116,117,114,110,115,32,96,48,96,44,32,116,104,101,32,118,97, 108,117,101,32,117,115,101,100,32,116,111,32,105,110,100,105,99,97,116,101, 32,97,32,70,65,76,83,69,32,114,101,115,117,108,116,46,0,82,101,116, 117,114,110,115,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99, 101,108,108,115,32,97,118,97,105,108,97,98,108,101,32,116,111,32,121,111, 117,114,32,97,112,112,108,105,99,97,116,105,111,110,46,32,84,104,105,115, 32,105,115,32,116,104,101,32,97,109,111,117,110,116,32,111,102,32,109,101, 109,111,114,121,44,32,108,101,115,115,32,116,104,101,32,97,108,114,101,97, 100,121,32,99,111,110,115,117,109,101,100,32,112,111,114,116,105,111,110,32, 97,110,100,32,98,117,102,102,101,114,115,32,109,97,112,112,101,100,32,102, 111,114,32,82,101,116,114,111,39,115,32,105,110,116,101,114,110,97,108,32, 117,115,101,46,0,72,111,108,100,32,116,104,101,32,112,97,116,104,32,116, 111,32,116,104,101,32,117,115,101,114,115,32,104,111,109,101,32,100,105,114, 101,99,116,111,114,121,46,32,68,101,102,105,110,101,100,32,97,115,32,97, 32,102,108,111,97,116,105,110,103,32,98,117,102,102,101,114,32,97,98,111, 118,101,32,96,104,101,114,101,96,46,0,86,97,114,105,97,98,108,101,46, 32,72,111,108,100,115,32,116,104,101,32,97,100,100,114,101,115,115,32,111, 102,32,116,104,101,32,110,101,120,116,32,97,118,97,105,108,97,98,108,101, 32,99,101,108,108,46,0,65,99,99,101,115,115,32,116,104,101,32,108,111, 111,112,32,105,110,100,101,120,32,102,111,114,32,116,104,101,32,99,117,114, 114,101,110,116,32,108,111,111,112,46,32,40,70,111,114,32,108,111,111,112, 115,32,109,97,100,101,32,117,115,105,110,103,32,96,105,110,100,101,120,101, 100,45,116,105,109,101,115,96,41,0,86,97,114,105,97,98,108,101,46,32, 87,104,101,110,32,84,82,85,69,44,32,105,103,110,111,114,101,32,105,110, 112,117,116,32,116,111,32,101,110,100,32,111,102,32,108,105,110,101,46,0, 65,99,99,101,115,115,32,116,104,101,32,112,97,114,101,110,116,32,108,111, 111,112,32,105,110,100,101,120,32,102,111,114,32,116,104,101,32,99,117,114, 114,101,110,116,32,108,111,111,112,46,32,40,70,111,114,32,108,111,111,112, 115,32,109,97,100,101,32,117,115,105,110,103,32,96,105,110,100,101,120,101, 100,45,116,105,109,101,115,96,41,0,65,99,99,101,115,115,32,116,104,101, 32,103,114,97,110,100,112,97,114,101,110,116,32,108,111,111,112,32,105,110, 100,101,120,32,102,111,114,32,116,104,101,32,99,117,114,114,101,110,116,32, 108,111,111,112,46,32,40,70,111,114,32,108,111,111,112,115,32,109,97,100, 101,32,117,115,105,110,103,32,96,105,110,100,101,120,101,100,45,116,105,109, 101,115,96,41,0,86,97,114,105,97,98,108,101,46,32,87,104,101,110,32, 115,101,116,32,116,111,32,96,84,82,85,69,96,44,32,82,101,116,114,111, 32,119,105,108,108,32,114,101,112,108,97,99,101,32,117,110,100,101,114,115, 99,111,114,101,115,32,105,110,32,115,116,114,105,110,103,115,32,119,105,116, 104,32,115,112,97,99,101,115,46,32,87,104,101,110,32,96,70,65,76,83, 69,96,44,32,82,101,116,114,111,32,100,111,101,115,32,110,111,116,46,0, 82,101,116,117,114,110,32,116,104,101,32,97,100,100,114,101,115,115,32,111, 102,32,116,104,101,32,115,116,97,114,116,32,111,102,32,116,104,101,32,116, 101,109,112,111,114,97,114,121,32,115,116,114,105,110,103,32,112,111,111,108, 46,32,84,104,105,115,32,99,97,110,32,98,101,32,97,108,116,101,114,101, 100,32,98,121,32,99,104,97,110,103,105,110,103,32,116,104,101,32,118,97, 108,117,101,115,32,111,102,32,96,84,101,109,112,83,116,114,105,110,103,115, 96,32,97,110,100,32,96,84,101,109,112,83,116,114,105,110,103,77,97,120, 96,46,0,86,97,114,105,97,98,108,101,46,32,84,104,105,115,32,104,111, 108,100,115,32,115,111,109,101,32,105,110,102,111,114,109,97,116,105,111,110, 32,117,115,101,100,32,98,121,32,96,123,123,96,32,97,110,100,32,96,125, 125,96,46,0,67,111,110,115,116,97,110,116,46,32,82,101,116,117,114,110, 115,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,116, 101,120,116,32,105,110,112,117,116,32,98,117,102,102,101,114,46,0,82,101, 116,117,114,110,115,32,96,45,49,96,44,32,116,104,101,32,118,97,108,117, 101,32,117,115,101,100,32,116,111,32,105,110,100,105,99,97,116,101,32,97, 32,84,82,85,69,32,114,101,115,117,108,116,46,0,86,97,114,105,97,98, 108,101,46,32,72,111,108,100,115,32,116,104,101,32,109,97,120,105,109,117, 109,32,108,101,110,103,116,104,32,111,102,32,97,32,116,101,109,112,111,114, 97,114,121,32,115,116,114,105,110,103,46,0,86,97,114,105,97,98,108,101, 46,32,72,111,108,100,115,32,116,104,101,32,110,117,109,98,101,114,32,111, 102,32,116,101,109,112,111,114,97,114,121,32,115,116,114,105,110,103,115,46, 0,86,97,114,105,97,98,108,101,46,32,84,104,105,115,32,115,116,111,114, 101,115,32,116,104,101,32,118,101,114,115,105,111,110,32,110,117,109,98,101, 114,46,0,66,101,103,105,110,32,97,32,113,117,111,116,97,116,105,111,110, 46,0,69,110,100,32,97,32,113,117,111,116,97,116,105,111,110,46,0,67, 111,109,112,97,114,101,32,97,108,108,32,118,97,108,117,101,115,32,105,110, 32,116,104,101,32,97,114,114,97,121,46,32,82,101,116,117,114,110,32,96, 70,65,76,83,69,96,32,105,102,32,97,108,108,32,118,97,108,117,101,115, 32,97,114,101,32,101,113,117,97,108,32,111,114,32,96,84,82,85,69,96, 32,111,116,104,101,114,119,105,115,101,46,32,84,104,105,115,32,97,115,115, 117,109,101,115,32,116,104,101,32,97,114,114,97,121,32,99,111,110,116,97, 105,110,115,32,111,110,108,121,32,110,117,109,101,114,105,99,32,118,97,108, 117,101,115,46,0,82,101,116,117,114,110,32,97,32,110,101,119,32,97,114, 114,97,121,32,99,111,110,115,105,115,116,105,110,103,32,111,102,32,116,104, 101,32,118,97,108,117,101,115,32,105,110,32,97,49,32,102,111,108,108,111, 119,101,100,32,98,121,32,116,104,101,32,118,97,108,117,101,115,32,105,110, 32,97,50,46,0,82,101,116,117,114,110,32,96,84,82,85,69,96,32,105, 102,32,97,49,32,98,101,103,105,110,115,32,119,105,116,104,32,97,50,32, 111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115,101, 46,0,82,101,116,117,114,110,32,97,32,110,101,119,32,97,114,114,97,121, 32,99,111,110,116,97,105,110,105,110,103,32,97,108,108,32,98,117,116,32, 116,104,101,32,108,97,115,116,32,118,97,108,117,101,32,105,110,32,116,104, 101,32,115,111,117,114,99,101,32,97,114,114,97,121,46,0,82,101,116,117, 114,110,32,96,84,82,85,69,96,32,105,102,32,116,104,101,32,115,116,114, 105,110,103,32,118,97,108,117,101,32,105,115,32,105,110,32,116,104,101,32, 97,114,114,97,121,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104, 101,114,119,105,115,101,46,0,82,101,116,117,114,110,32,96,84,82,85,69, 96,32,105,102,32,116,104,101,32,118,97,108,117,101,32,105,115,32,105,110, 32,116,104,101,32,97,114,114,97,121,32,111,114,32,96,70,65,76,83,69, 96,32,111,116,104,101,114,119,105,115,101,46,0,67,111,112,121,32,97,110, 32,97,114,114,97,121,32,40,97,49,41,32,116,111,32,97,32,100,101,115, 116,105,110,97,116,105,111,110,32,40,97,50,41,46,0,82,117,110,32,97, 32,113,117,111,116,101,32,97,110,100,32,99,111,110,115,116,114,117,99,116, 32,97,32,110,101,119,32,97,114,114,97,121,32,102,114,111,109,32,116,104, 101,32,114,101,116,117,114,110,101,100,32,118,97,108,117,101,115,46,32,84, 104,101,32,113,117,111,116,101,32,115,104,111,117,108,100,32,114,101,116,117, 114,110,32,116,104,101,32,118,97,108,117,101,115,32,97,110,100,32,116,104, 101,32,110,117,109,98,101,114,32,111,102,32,118,97,108,117,101,115,32,116, 111,32,112,117,116,32,105,110,116,111,32,116,104,101,32,97,114,114,97,121, 46,0,77,97,107,101,32,97,32,99,111,112,121,32,111,102,32,97,110,32, 97,114,114,97,121,46,32,82,101,116,117,114,110,32,116,104,101,32,97,100, 100,114,101,115,115,32,111,102,32,116,104,101,32,99,111,112,121,46,0,82, 101,116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,97,49,32,101, 110,100,115,32,119,105,116,104,32,97,50,32,111,114,32,96,70,65,76,83, 69,96,32,111,116,104,101,114,119,105,115,101,46,0,67,111,109,112,97,114, 101,32,97,108,108,32,118,97,108,117,101,115,32,105,110,32,116,104,101,32, 97,114,114,97,121,46,32,82,101,116,117,114,110,32,96,84,82,85,69,96, 32,105,102,32,97,108,108,32,118,97,108,117,101,115,32,97,114,101,32,101, 113,117,97,108,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101, 114,119,105,115,101,46,32,84,104,105,115,32,97,115,115,117,109,101,115,32, 116,104,101,32,97,114,114,97,121,32,99,111,110,116,97,105,110,115,32,111, 110,108,121,32,110,117,109,101,114,105,99,32,118,97,108,117,101,115,46,0, 70,101,116,99,104,32,116,104,101,32,118,97,108,117,101,32,115,116,111,114, 101,100,32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, 105,110,100,101,120,32,105,110,32,116,104,101,32,115,112,101,99,105,102,105, 101,100,32,97,114,114,97,121,46,0,70,111,114,32,101,97,99,104,32,105, 116,101,109,32,105,110,32,116,104,101,32,105,110,105,116,105,97,108,32,97, 114,114,97,121,44,32,114,117,110,32,116,104,101,32,115,112,101,99,105,102, 105,101,100,32,113,117,111,116,101,46,32,73,102,32,116,104,101,32,113,117, 111,116,101,32,114,101,116,117,114,110,115,32,96,84,82,85,69,96,44,32, 99,111,112,121,32,116,104,101,32,105,116,101,109,32,105,110,116,111,32,97, 32,110,101,119,32,97,114,114,97,121,46,32,73,102,32,96,70,65,76,83, 69,96,44,32,100,105,115,99,97,114,100,32,105,116,46,32,82,101,116,117, 114,110,115,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101, 32,110,101,119,32,97,114,114,97,121,46,0,82,101,116,117,114,110,32,116, 104,101,32,102,105,114,115,116,32,118,97,108,117,101,32,105,110,32,116,104, 101,32,97,114,114,97,121,46,0,69,120,101,99,117,116,101,32,116,104,101, 32,113,117,111,116,101,32,111,110,99,101,32,102,111,114,32,101,97,99,104, 32,105,116,101,109,32,105,110,32,116,104,101,32,97,114,114,97,121,46,0, 67,114,101,97,116,101,32,97,32,110,101,119,32,97,114,114,97,121,32,119, 105,116,104,32,116,104,101,32,99,104,97,114,97,99,116,101,114,115,32,105, 110,32,116,104,101,32,115,111,117,114,99,101,32,115,116,114,105,110,103,46, 0,67,97,108,99,117,108,97,116,101,32,97,32,104,97,115,104,32,118,97, 108,117,101,32,102,111,114,32,97,32,103,105,118,101,110,32,97,114,114,97, 121,46,0,82,101,116,117,114,110,32,116,104,101,32,108,111,99,97,116,105, 111,110,32,111,102,32,116,104,101,32,102,105,114,115,116,32,105,110,115,116, 97,110,99,101,32,111,102,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,118,97,108,117,101,32,105,110,32,116,104,101,32,97,114,114,97,121, 46,0,82,101,116,117,114,110,32,116,104,101,32,108,111,99,97,116,105,111, 110,32,111,102,32,116,104,101,32,102,105,114,115,116,32,105,110,115,116,97, 110,99,101,32,111,102,32,116,104,101,32,115,112,101,99,105,102,105,101,100, 32,115,116,114,105,110,103,32,105,110,32,116,104,101,32,97,114,114,97,121, 46,0,82,101,116,117,114,110,32,97,32,110,101,119,32,97,114,114,97,121, 32,119,105,116,104,32,116,104,101,32,105,110,100,105,99,101,115,32,116,104, 101,32,115,112,101,99,105,102,105,101,100,32,118,97,108,117,101,32,119,97, 115,32,102,111,117,110,100,32,97,116,32,105,110,32,116,104,101,32,111,114, 105,103,105,110,97,108,32,97,114,114,97,121,46,0,82,101,116,117,114,110, 32,97,32,110,101,119,32,97,114,114,97,121,32,119,105,116,104,32,116,104, 101,32,105,110,100,105,99,101,115,32,111,102,32,116,104,101,32,115,112,101, 99,105,102,105,101,100,32,115,116,114,105,110,103,32,105,110,32,116,104,101, 32,111,114,105,103,105,110,97,108,32,97,114,114,97,121,46,0,82,101,116, 117,114,110,32,116,104,101,32,108,97,115,116,32,118,97,108,117,101,32,105, 110,32,116,104,101,32,97,114,114,97,121,46,0,82,101,116,117,114,110,32, 97,32,110,101,119,32,97,114,114,97,121,32,99,111,110,116,97,105,110,105, 110,103,32,116,104,101,32,102,105,114,115,116,32,96,110,96,32,118,97,108, 117,101,115,32,102,114,111,109,32,116,104,101,32,115,111,117,114,99,101,32, 97,114,114,97,121,46,0,82,101,116,117,114,110,32,116,104,101,32,108,101, 110,103,116,104,32,111,102,32,97,32,97,114,114,97,121,46,0,69,120,101, 99,117,116,101,32,113,117,111,116,101,46,32,82,101,116,117,114,110,32,97, 32,110,101,119,32,97,114,114,97,121,32,99,111,110,116,97,105,110,105,110, 103,32,116,104,101,32,118,97,108,117,101,115,32,116,104,101,32,113,117,111, 116,101,32,108,101,97,118,101,115,32,111,110,32,116,104,101,32,115,116,97, 99,107,46,32,84,104,105,115,32,105,115,32,105,100,101,110,116,105,99,97, 108,32,116,111,32,100,111,105,110,103,32,96,97,58,99,111,117,110,116,101, 100,45,114,101,115,117,108,116,115,0,69,120,101,99,117,116,101,32,113,117, 111,116,101,32,111,110,99,101,32,102,111,114,32,101,97,99,104,32,105,116, 101,109,32,105,110,32,116,104,101,32,97,114,114,97,121,46,32,67,111,110, 115,116,114,117,99,116,115,32,97,32,110,101,119,32,97,114,114,97,121,32, 102,114,111,109,32,116,104,101,32,118,97,108,117,101,32,114,101,116,117,114, 110,101,100,32,98,121,32,116,104,101,32,113,117,111,116,101,46,0,69,120, 116,114,97,99,116,32,97,32,110,101,119,32,97,114,114,97,121,32,102,114, 111,109,32,116,104,101,32,109,105,100,100,108,101,32,111,102,32,116,104,101, 32,115,112,101,99,105,102,105,101,100,32,97,114,114,97,121,46,32,84,104, 105,115,32,119,105,108,108,32,116,97,107,101,32,116,104,101,32,118,97,108, 117,101,115,32,115,116,97,114,116,105,110,103,32,97,116,32,96,102,96,32, 97,110,100,32,101,120,116,101,110,100,32,116,111,32,116,104,101,32,96,108, 96,32,108,97,115,116,32,118,97,108,117,101,46,0,82,101,116,117,114,110, 32,97,32,110,101,119,32,97,114,114,97,121,32,99,111,110,115,105,115,116, 105,110,103,32,111,102,32,116,104,101,32,118,97,108,117,101,115,32,105,110, 32,97,50,32,102,111,108,108,111,119,101,100,32,98,121,32,116,104,101,32, 118,97,108,117,101,115,32,105,110,32,97,49,46,0,84,97,107,101,115,32, 97,110,32,97,114,114,97,121,44,32,97,32,115,116,97,114,116,105,110,103, 32,118,97,108,117,101,44,32,97,110,100,32,97,32,113,117,111,116,101,46, 32,84,104,105,115,32,119,105,108,108,32,97,112,112,108,121,32,116,104,101, 32,113,117,111,116,101,32,116,111,32,101,97,99,104,32,105,116,101,109,32, 105,110,32,116,104,101,32,97,114,114,97,121,59,32,116,104,101,32,113,117, 111,116,101,32,115,104,111,117,108,100,32,99,111,110,115,117,109,101,32,116, 119,111,32,118,97,108,117,101,115,32,97,110,100,32,114,101,116,117,114,110, 32,111,110,101,46,0,82,101,118,101,114,115,101,32,116,104,101,32,111,114, 100,101,114,32,111,102,32,105,116,101,109,115,32,105,110,32,97,32,97,114, 114,97,121,46,32,84,104,105,115,32,119,105,108,108,32,114,101,116,117,114, 110,32,97,32,110,101,119,32,97,114,114,97,121,46,0,82,101,116,117,114, 110,32,97,32,110,101,119,32,97,114,114,97,121,32,99,111,110,116,97,105, 110,105,110,103,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,110, 117,109,98,101,114,32,111,102,32,118,97,108,117,101,115,32,102,114,111,109, 32,116,104,101,32,114,105,103,104,116,32,115,105,100,101,32,111,102,32,116, 104,101,32,97,114,114,97,121,46,0,83,116,111,114,101,32,97,32,118,97, 108,117,101,32,105,110,116,111,32,116,104,101,32,97,114,114,97,121,32,97, 116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,105,110,100,101, 120,46,0,77,97,107,101,32,97,32,99,111,112,121,32,111,102,32,116,104, 101,32,97,114,114,97,121,32,105,110,32,97,32,114,111,116,97,116,105,110, 103,32,115,101,116,32,111,102,32,116,101,109,112,111,114,97,114,121,32,98, 117,102,102,101,114,115,46,0,82,101,116,117,114,110,32,116,104,101,32,97, 99,116,117,97,108,32,97,100,100,114,101,115,115,32,111,102,32,116,104,101, 32,96,110,96,116,104,32,105,116,101,109,32,105,110,32,116,104,101,32,97, 114,114,97,121,46,0,67,114,101,97,116,101,32,97,32,110,101,119,32,115, 116,114,105,110,103,32,102,114,111,109,32,116,104,101,32,112,114,111,118,105, 100,101,100,32,97,114,114,97,121,32,111,102,32,99,104,97,114,97,99,116, 101,114,32,118,97,108,117,101,115,46,32,84,104,105,115,32,115,116,114,105, 110,103,32,119,105,108,108,32,98,101,32,115,116,111,114,101,100,32,105,110, 32,116,104,101,32,116,101,109,112,111,114,97,108,32,115,116,114,105,110,103, 32,98,117,102,102,101,114,115,46,0,65,98,111,114,116,32,101,120,101,99, 117,116,105,111,110,46,0,67,108,111,115,101,32,97,110,32,117,110,99,111, 110,100,105,116,105,111,110,97,108,32,108,111,111,112,46,32,66,114,97,110, 99,104,101,115,32,98,97,99,107,32,116,111,32,116,104,101,32,112,114,105, 111,114,32,96,114,101,112,101,97,116,96,46,0,65,108,108,111,99,97,116, 101,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,110,117,109,98, 101,114,32,111,102,32,99,101,108,108,115,32,102,114,111,109,32,116,104,101, 32,96,72,101,97,112,96,46,0,80,101,114,102,111,114,109,32,97,32,98, 105,116,119,105,115,101,32,65,78,68,32,111,112,101,114,97,116,105,111,110, 32,98,101,116,119,101,101,110,32,116,104,101,32,116,119,111,32,112,114,111, 118,105,100,101,100,32,118,97,108,117,101,115,46,0,70,101,116,99,104,32, 116,104,101,32,56,45,98,105,116,32,118,97,108,117,101,32,115,116,111,114, 101,100,32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, 97,100,100,114,101,115,115,46,32,65,100,100,114,101,115,115,105,110,103,32, 102,111,114,32,116,104,105,115,32,105,115,32,105,110,32,56,45,98,105,116, 32,117,110,105,116,115,46,0,70,101,116,99,104,32,116,104,101,32,118,97, 108,117,101,32,115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112, 101,99,105,102,105,101,100,32,97,100,100,114,101,115,115,46,32,82,101,116, 117,114,110,115,32,116,104,101,32,110,101,120,116,32,97,100,100,114,101,115, 115,32,97,110,100,32,116,104,101,32,118,97,108,117,101,46,0,83,116,111, 114,101,32,97,110,32,56,45,98,105,116,32,118,97,108,117,101,32,105,110, 116,111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100,100, 114,101,115,115,46,32,65,100,100,114,101,115,115,105,110,103,32,102,111,114, 32,116,104,105,115,32,105,115,32,105,110,32,56,45,98,105,116,32,117,110, 105,116,115,46,0,83,116,111,114,101,32,97,32,118,97,108,117,101,32,105, 110,116,111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100, 100,114,101,115,115,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, 32,110,101,120,116,32,97,100,100,114,101,115,115,46,0,84,114,97,110,115, 108,97,116,101,32,97,32,112,104,121,115,105,99,97,108,32,97,100,100,114, 101,115,115,32,116,111,32,97,32,98,121,116,101,32,97,100,100,114,101,115, 115,46,0,68,105,115,112,108,97,121,32,97,32,119,101,108,99,111,109,101, 32,109,101,115,115,97,103,101,32,111,110,32,115,116,97,114,116,117,112,46, 0,69,120,101,99,117,116,101,32,113,49,32,97,103,97,105,110,115,116,32, 120,44,32,116,104,101,110,32,101,120,101,99,117,116,101,32,113,50,32,97, 103,97,105,110,115,116,32,97,32,99,111,112,121,32,111,102,32,120,46,0, 69,120,101,99,117,116,101,32,113,49,32,97,103,97,105,110,115,116,32,120, 32,97,110,100,32,113,50,32,97,103,97,105,110,115,116,32,121,46,0,69, 120,101,99,117,116,101,32,113,32,97,103,97,105,110,115,116,32,120,44,32, 116,104,101,110,32,101,120,101,99,117,116,101,32,113,32,97,103,97,105,110, 115,116,32,121,46,0,83,101,116,32,96,66,97,115,101,96,32,116,111,32, 98,105,110,97,114,121,46,0,82,101,97,100,32,49,48,50,52,32,99,101, 108,108,115,32,102,114,111,109,32,98,108,111,99,107,32,110,32,105,110,32, 116,104,101,32,98,108,111,99,107,32,115,116,111,114,97,103,101,32,105,110, 116,111,32,109,101,109,111,114,121,32,97,116,32,97,100,100,114,101,115,115, 32,97,46,0,83,101,116,32,116,104,101,32,102,105,108,101,32,110,97,109, 101,32,111,102,32,116,104,101,32,98,108,111,99,107,32,115,116,111,114,97, 103,101,32,100,101,118,105,99,101,46,0,83,97,118,101,32,116,104,101,32, 49,48,50,52,32,99,101,108,108,115,32,97,116,32,97,100,100,114,101,115, 115,32,97,32,116,111,32,98,108,111,99,107,32,110,32,105,110,32,116,104, 101,32,98,108,111,99,107,32,115,116,111,114,97,103,101,46,0,65,112,112, 101,110,100,32,97,32,118,97,108,117,101,32,116,111,32,116,104,101,32,99, 117,114,114,101,110,116,32,98,117,102,102,101,114,46,0,82,101,115,101,116, 32,116,104,101,32,99,117,114,114,101,110,116,32,98,117,102,102,101,114,32, 116,111,32,97,110,32,101,109,112,116,121,32,115,116,97,116,101,46,0,82, 101,116,117,114,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116, 104,101,32,99,117,114,114,101,110,116,32,101,110,100,32,111,102,32,116,104, 101,32,97,99,116,105,118,101,32,98,117,102,102,101,114,46,0,82,101,109, 111,118,101,32,116,104,101,32,108,97,115,116,32,118,97,108,117,101,32,102, 114,111,109,32,116,104,101,32,99,117,114,114,101,110,116,32,98,117,102,102, 101,114,46,0,83,97,118,101,32,97,110,100,32,114,101,115,116,111,114,101, 32,116,104,101,32,99,117,114,114,101,110,116,32,98,117,102,102,101,114,32, 98,101,102,111,114,101,32,97,110,100,32,97,102,116,101,114,32,101,120,101, 99,117,116,105,110,103,32,116,104,101,32,115,112,101,99,105,102,105,101,100, 32,113,117,111,116,101,46,0,65,115,115,105,103,110,32,97,32,110,101,119, 32,98,117,102,102,101,114,32,97,115,32,116,104,101,32,99,117,114,114,101, 110,116,32,111,110,101,46,0,82,101,116,117,114,110,32,116,104,101,32,110, 117,109,98,101,114,32,111,102,32,99,101,108,108,115,32,105,110,32,116,104, 101,32,98,117,102,102,101,114,46,0,82,101,116,117,114,110,32,116,104,101, 32,115,116,97,114,116,32,97,100,100,114,101,115,115,32,111,102,32,116,104, 101,32,99,117,114,114,101,110,116,32,98,117,102,102,101,114,46,0,69,120, 105,116,32,82,101,116,114,111,46,0,82,101,116,117,114,110,32,84,82,85, 69,32,105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32,97,32, 110,111,116,32,99,111,110,115,111,110,97,110,116,32,111,114,32,70,65,76, 83,69,32,111,116,104,101,114,119,105,115,101,46,0,82,101,116,117,114,110, 32,84,82,85,69,32,105,102,32,99,104,97,114,97,99,116,101,114,32,105, 115,32,97,32,110,111,116,32,110,117,109,101,114,105,99,32,100,105,103,105, 116,32,111,114,32,70,65,76,83,69,32,111,116,104,101,114,119,105,115,101, 46,0,82,101,116,117,114,110,32,84,82,85,69,32,105,102,32,99,104,97, 114,97,99,116,101,114,32,105,115,32,110,111,116,32,108,111,119,101,114,99, 97,115,101,32,111,114,32,70,65,76,83,69,32,111,116,104,101,114,119,105, 115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32,105,102,32,99, 104,97,114,97,99,116,101,114,32,105,115,32,110,111,116,32,117,112,112,101, 114,99,97,115,101,32,111,114,32,70,65,76,83,69,32,111,116,104,101,114, 119,105,115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32,105,102, 32,99,104,97,114,97,99,116,101,114,32,105,115,32,110,111,116,32,112,114, 105,110,116,97,98,108,101,32,111,114,32,70,65,76,83,69,32,111,116,104, 101,114,119,105,115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32, 105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32,110,111,116,32, 97,32,118,111,119,101,108,32,111,114,32,70,65,76,83,69,32,111,116,104, 101,114,119,105,115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32, 105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32,110,111,116,32, 119,104,105,116,101,115,112,97,99,101,44,32,111,114,32,70,65,76,83,69, 32,111,116,104,101,114,119,105,115,101,46,0,82,101,116,117,114,110,32,84, 82,85,69,32,105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32, 97,32,99,111,110,115,111,110,97,110,116,32,111,114,32,70,65,76,83,69, 32,111,116,104,101,114,119,105,115,101,46,0,82,101,116,117,114,110,32,84, 82,85,69,32,105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32, 97,32,110,117,109,101,114,105,99,32,100,105,103,105,116,32,111,114,32,70, 65,76,83,69,32,111,116,104,101,114,119,105,115,101,46,0,86,101,99,116, 111,114,101,100,46,32,82,101,97,100,32,97,32,115,105,110,103,108,101,32, 107,101,121,112,114,101,115,115,46,0,82,101,116,117,114,110,32,84,82,85, 69,32,105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32,97,110, 32,65,83,67,73,73,32,108,101,116,116,101,114,32,111,114,32,70,65,76, 83,69,32,111,116,104,101,114,119,105,115,101,46,0,82,101,116,117,114,110, 32,84,82,85,69,32,105,102,32,99,104,97,114,97,99,116,101,114,32,105, 115,32,108,111,119,101,114,99,97,115,101,32,111,114,32,70,65,76,83,69, 32,111,116,104,101,114,119,105,115,101,46,0,86,101,99,116,111,114,101,100, 46,32,68,105,115,112,108,97,121,32,97,32,115,105,110,103,108,101,32,99, 104,97,114,97,99,116,101,114,46,0,67,111,110,118,101,114,116,32,99,104, 97,114,97,99,116,101,114,32,116,111,32,108,111,119,101,114,99,97,115,101, 32,101,113,117,105,118,97,108,101,110,116,46,0,67,111,110,118,101,114,116, 32,97,110,32,65,83,67,73,73,32,100,105,103,105,116,32,99,104,97,114, 97,99,116,101,114,32,105,110,116,111,32,116,104,101,32,99,111,114,114,101, 115,112,111,110,100,105,110,103,32,100,101,99,105,109,97,108,32,118,97,108, 117,101,0,67,111,110,118,101,114,116,32,99,104,97,114,97,99,116,101,114, 32,105,110,116,111,32,97,32,115,116,114,105,110,103,46,0,67,111,110,118, 101,114,116,32,99,104,97,114,97,99,116,101,114,32,116,111,32,117,112,112, 101,114,99,97,115,101,32,101,113,117,105,118,97,108,101,110,116,46,0,67, 111,110,118,101,114,116,32,97,110,32,65,83,67,73,73,32,99,104,97,114, 97,99,116,101,114,32,116,111,32,116,104,101,32,111,112,112,111,115,105,116, 101,32,99,97,115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32, 105,102,32,99,104,97,114,97,99,116,101,114,32,105,115,32,117,112,112,101, 114,99,97,115,101,32,111,114,32,70,65,76,83,69,32,111,116,104,101,114, 119,105,115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32,105,102, 32,99,104,97,114,97,99,116,101,114,32,105,115,32,112,114,105,110,116,97, 98,108,101,32,111,114,32,70,65,76,83,69,32,111,116,104,101,114,119,105, 115,101,46,0,82,101,116,117,114,110,32,84,82,85,69,32,105,102,32,99, 104,97,114,97,99,116,101,114,32,105,115,32,97,32,118,111,119,101,108,32, 111,114,32,70,65,76,83,69,32,111,116,104,101,114,119,105,115,101,46,0, 82,101,116,117,114,110,32,84,82,85,69,32,105,102,32,99,104,97,114,97, 99,116,101,114,32,105,115,32,119,104,105,116,101,115,112,97,99,101,44,32, 111,114,32,70,65,76,83,69,32,111,116,104,101,114,119,105,115,101,46,0, 67,97,108,108,32,97,32,102,117,110,99,116,105,111,110,46,0,82,101,116, 117,114,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101, 32,99,97,114,32,111,102,32,99,111,110,115,32,97,46,0,83,116,111,114, 101,32,110,32,105,110,116,111,32,116,104,101,32,99,97,114,32,111,102,32, 99,111,110,115,32,97,46,0,82,101,116,117,114,110,32,116,104,101,32,99, 111,110,116,101,110,116,115,32,111,102,32,116,104,101,32,99,97,114,32,111, 102,32,99,111,110,115,32,97,46,0,73,102,32,96,110,96,32,105,115,32, 101,113,117,97,108,32,116,111,32,96,109,96,44,32,100,114,111,112,32,98, 111,116,104,32,97,110,100,32,101,120,101,99,117,116,101,32,116,104,101,32, 115,112,101,99,105,102,105,101,100,32,113,117,111,116,101,32,98,101,102,111, 114,101,32,101,120,105,116,105,110,103,32,116,104,101,32,99,97,108,108,105, 110,103,32,119,111,114,100,46,32,73,102,32,110,111,116,32,101,113,117,97, 108,44,32,108,101,97,118,101,32,96,110,96,32,111,110,32,116,104,101,32, 115,116,97,99,107,32,97,110,100,32,108,101,116,32,101,120,101,99,117,116, 105,111,110,32,99,111,110,116,105,110,117,101,46,0,82,101,116,117,114,110, 32,97,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,99,100, 114,32,111,102,32,99,111,110,115,32,97,46,0,83,116,111,114,101,32,110, 32,105,110,116,111,32,116,104,101,32,99,100,114,32,111,102,32,99,111,110, 115,32,97,46,0,82,101,116,117,114,110,32,116,104,101,32,99,111,110,116, 101,110,116,115,32,111,102,32,116,104,101,32,99,100,114,32,111,102,32,99, 111,110,115,32,97,46,0,69,120,101,99,117,116,101,32,113,49,32,105,102, 32,116,104,101,32,102,108,97,103,32,105,115,32,116,114,117,101,32,40,45, 49,41,32,111,114,32,113,50,32,105,102,32,116,104,101,32,102,108,97,103, 32,105,115,32,102,97,108,115,101,32,40,48,41,46,32,79,110,108,121,32, 116,104,101,115,101,32,102,108,97,103,115,32,97,114,101,32,118,97,108,105, 100,32,119,104,101,110,32,117,115,105,110,103,32,96,99,104,111,111,115,101, 96,59,32,112,97,115,115,105,110,103,32,111,116,104,101,114,32,118,97,108, 117,101,115,32,97,115,32,102,108,97,103,115,32,119,105,108,108,32,114,101, 115,117,108,116,32,105,110,32,109,101,109,111,114,121,32,99,111,114,114,117, 112,116,105,111,110,46,0,67,108,97,115,115,32,104,97,110,100,108,101,114, 32,102,111,114,32,100,97,116,97,32,115,116,114,117,99,116,117,114,101,115, 46,0,67,108,97,115,115,32,104,97,110,100,108,101,114,32,102,111,114,32, 99,111,109,112,105,108,101,114,32,109,97,99,114,111,115,32,40,105,109,109, 101,100,105,97,116,101,32,119,111,114,100,115,41,0,67,108,97,115,115,32, 104,97,110,100,108,101,114,32,102,111,114,32,112,114,105,109,105,116,105,118, 101,32,119,111,114,100,115,32,40,119,111,114,100,115,32,119,104,105,99,104, 32,109,97,112,32,116,111,32,78,103,97,32,105,110,115,116,114,117,99,116, 105,111,110,115,41,0,67,108,97,115,115,32,104,97,110,100,108,101,114,32, 102,111,114,32,110,111,114,109,97,108,32,119,111,114,100,115,46,0,82,101, 116,117,114,110,32,116,104,101,32,99,117,114,114,101,110,116,32,100,97,121, 46,0,82,101,116,117,114,110,32,116,104,101,32,99,117,114,114,101,110,116, 32,104,111,117,114,46,32,84,104,105,115,32,119,105,108,108,32,98,101,32, 105,110,32,116,104,101,32,114,97,110,103,101,32,111,102,32,48,45,50,51, 44,32,105,110,99,108,117,115,105,118,101,46,0,82,101,116,117,114,110,32, 116,104,101,32,99,117,114,114,101,110,116,32,109,105,110,117,116,101,46,32, 84,104,105,115,32,119,105,108,108,32,98,101,32,105,110,32,116,104,101,32, 114,97,110,103,101,32,111,102,32,48,45,53,57,44,32,105,110,99,108,117, 115,105,118,101,46,0,82,101,116,117,114,110,32,116,104,101,32,99,117,114, 114,101,110,116,32,109,111,110,116,104,46,32,84,104,105,115,32,119,105,108, 108,32,98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32,111,102, 32,49,45,49,50,44,32,105,110,99,108,117,115,105,118,101,46,0,84,114, 105,103,103,101,114,32,97,32,99,108,111,99,107,32,111,112,101,114,97,116, 105,111,110,46,32,84,104,105,115,32,105,115,32,110,111,116,32,105,110,116, 101,110,100,101,100,32,116,111,32,98,101,32,117,115,101,100,32,100,105,114, 101,99,116,108,121,46,0,82,101,116,117,114,110,32,116,104,101,32,99,117, 114,114,101,110,116,32,115,101,99,111,110,100,46,32,84,104,105,115,32,119, 105,108,108,32,98,101,32,105,110,32,116,104,101,32,114,97,110,103,101,32, 111,102,32,48,45,53,57,44,32,105,110,99,108,117,115,105,118,101,46,0, 82,101,116,117,114,110,32,97,32,104,111,115,116,32,115,112,101,99,105,102, 105,99,32,116,105,109,101,115,116,97,109,112,46,32,73,110,32,116,104,101, 32,115,116,97,110,100,97,114,100,32,115,121,115,116,101,109,44,32,116,104, 105,115,32,105,115,32,97,32,51,50,45,98,105,116,32,85,110,105,120,32, 116,105,109,101,115,116,97,109,112,44,32,98,117,116,32,116,104,105,115,32, 105,115,32,110,111,116,32,114,101,113,117,105,114,101,100,46,0,82,101,116, 117,114,110,32,116,104,101,32,99,117,114,114,101,110,116,32,100,97,121,32, 105,110,32,85,84,67,46,0,82,101,116,117,114,110,32,116,104,101,32,99, 117,114,114,101,110,116,32,104,111,117,114,32,105,110,32,85,84,67,46,0, 82,101,116,117,114,110,32,116,104,101,32,99,117,114,114,101,110,116,32,109, 105,110,117,116,101,32,105,110,32,85,84,67,46,0,82,101,116,117,114,110, 32,116,104,101,32,99,117,114,114,101,110,116,32,109,111,110,116,104,32,105, 110,32,85,84,67,46,0,82,101,116,117,114,110,32,116,104,101,32,99,117, 114,114,101,110,116,32,115,101,99,111,110,100,32,105,110,32,85,84,67,46, 0,82,101,116,117,114,110,32,116,104,101,32,99,117,114,114,101,110,116,32, 121,101,97,114,32,105,110,32,85,84,67,46,0,82,101,116,117,114,110,32, 116,104,101,32,99,117,114,114,101,110,116,32,121,101,97,114,46,0,83,116, 111,114,101,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,118,97, 108,117,101,32,105,110,116,111,32,116,104,101,32,109,101,109,111,114,121,32, 97,116,32,96,104,101,114,101,96,32,97,110,100,32,105,110,99,114,101,109, 101,110,116,32,96,72,101,97,112,96,32,98,121,32,49,46,32,73,100,101, 110,116,105,99,97,108,32,116,111,32,96,44,96,44,32,116,104,105,115,32, 105,115,32,112,114,111,118,105,100,101,100,32,102,111,114,32,99,111,109,112, 97,116,105,98,105,108,105,116,121,32,119,105,116,104,32,116,104,101,32,82, 101,116,114,111,70,111,114,116,104,32,111,110,32,105,108,111,32,97,110,100, 32,110,97,112,105,97,46,0,67,111,109,112,105,108,101,32,97,32,99,97, 108,108,32,116,111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, 97,100,100,114,101,115,115,32,105,110,116,111,32,116,104,101,32,99,117,114, 114,101,110,116,32,100,101,102,105,110,105,116,105,111,110,46,0,67,111,109, 112,105,108,101,32,97,32,106,117,109,112,32,116,111,32,116,104,101,32,115, 112,101,99,105,102,105,101,100,32,97,100,100,114,101,115,115,32,105,110,116, 111,32,116,104,101,32,99,117,114,114,101,110,116,32,100,101,102,105,110,105, 116,105,111,110,46,0,67,111,109,112,105,108,101,32,116,104,101,32,99,111, 100,101,32,116,111,32,112,117,115,104,32,97,32,110,117,109,98,101,114,32, 116,111,32,116,104,101,32,115,116,97,99,107,32,105,110,116,111,32,116,104, 101,32,99,117,114,114,101,110,116,32,100,101,102,105,110,105,116,105,111,110, 46,0,67,111,109,112,105,108,101,32,97,32,114,101,116,117,114,110,32,105, 110,115,116,114,117,99,116,105,111,110,32,105,110,116,111,32,116,104,101,32, 99,117,114,114,101,110,116,32,100,101,102,105,110,105,116,105,111,110,46,0, 82,101,116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,99,111,109, 112,105,108,101,114,32,105,115,32,111,110,32,111,114,32,96,70,65,76,83, 69,96,32,111,116,104,101,114,119,105,115,101,46,0,67,114,101,97,116,101, 32,97,32,110,101,119,32,99,111,110,115,32,99,101,108,108,32,119,105,116, 104,32,97,32,99,97,114,32,111,102,32,120,32,97,110,100,32,97,32,99, 100,114,32,111,102,32,121,46,0,67,114,101,97,116,101,32,97,32,99,111, 110,115,116,97,110,116,32,114,101,116,117,114,110,105,110,103,32,116,104,101, 32,115,112,101,99,105,102,105,101,100,32,118,97,108,117,101,46,0,67,111, 112,121,32,96,108,96,32,99,101,108,108,115,32,102,114,111,109,32,109,101, 109,111,114,121,32,97,116,32,96,115,96,32,116,111,32,116,104,101,32,109, 101,109,111,114,121,32,97,116,32,96,100,96,46,32,84,104,101,115,101,32, 115,104,111,117,108,100,32,110,111,116,32,111,118,101,114,108,97,112,46,0, 67,108,101,97,114,32,116,104,101,32,105,110,116,101,114,110,97,108,32,115, 116,97,116,101,32,111,102,32,99,111,114,101,32,96,110,96,46,32,84,104, 105,115,32,115,104,111,117,108,100,32,98,101,32,100,111,110,101,32,112,114, 105,111,114,32,116,111,32,117,115,101,32,111,102,32,96,99,111,114,101,58, 115,116,97,114,116,96,44,32,119,104,105,99,104,32,97,99,116,105,118,97, 116,101,115,32,112,114,111,99,101,115,115,105,110,103,32,111,110,32,116,104, 101,32,99,111,114,101,46,0,83,117,115,112,101,110,100,32,112,114,111,99, 101,115,115,105,110,103,32,111,110,32,99,111,114,101,32,96,110,96,46,0, 83,117,115,112,101,110,100,32,112,114,111,99,101,115,115,105,110,103,32,111, 110,32,116,104,101,32,99,117,114,114,101,110,116,32,99,111,114,101,46,0, 82,101,97,100,32,97,32,118,97,108,117,101,32,102,114,111,109,32,114,101, 103,105,115,116,101,114,32,96,110,96,32,111,110,32,116,104,101,32,99,117, 114,114,101,110,116,32,99,111,114,101,46,0,82,101,115,117,109,101,32,112, 114,111,99,101,115,115,105,110,103,32,111,110,32,99,111,114,101,32,96,110, 96,32,97,102,116,101,114,32,97,32,96,99,111,114,101,58,112,97,117,115, 101,96,32,111,114,32,96,99,111,114,101,58,112,97,117,115,101,45,99,117, 114,114,101,110,116,96,46,0,83,101,116,32,116,104,101,32,73,80,32,111, 102,32,99,111,114,101,32,96,110,96,32,116,111,32,97,100,100,114,101,115, 115,32,96,97,96,32,97,110,100,32,98,101,103,105,110,32,112,114,111,99, 101,115,115,105,110,103,32,111,110,32,99,111,114,101,32,96,110,96,46,0, 87,114,105,116,101,32,97,32,118,97,108,117,101,32,116,111,32,114,101,103, 105,115,116,101,114,32,110,117,109,98,101,114,32,96,110,96,32,111,110,32, 116,104,101,32,99,117,114,114,101,110,116,32,99,111,114,101,46,0,66,105, 110,100,32,97,32,118,97,108,117,101,32,116,111,32,97,32,102,117,110,99, 116,105,111,110,32,97,110,100,32,114,101,116,117,114,110,32,97,32,110,101, 119,32,113,117,111,116,101,32,116,104,97,116,32,99,97,108,108,115,32,116, 104,101,32,98,111,117,110,100,32,97,99,116,105,111,110,46,0,73,110,108, 105,110,101,32,97,32,110,117,109,101,114,105,99,32,118,97,108,117,101,32, 116,111,32,116,104,101,32,99,117,114,114,101,110,116,32,97,115,115,101,109, 98,108,121,32,115,101,103,109,101,110,116,46,0,86,97,114,105,97,98,108, 101,46,32,72,111,108,100,115,32,97,32,112,111,105,110,116,101,114,32,116, 104,111,32,116,104,101,32,102,117,110,99,116,105,111,110,32,102,111,114,32, 99,97,108,99,117,108,97,116,105,110,103,32,100,105,99,116,105,111,110,97, 114,121,32,104,97,115,104,101,115,46,0,86,101,99,116,111,114,101,100,46, 32,67,114,101,97,116,101,32,97,32,104,101,97,100,101,114,46,32,80,114, 111,118,105,100,101,32,97,32,115,116,114,105,110,103,32,40,115,41,32,102, 111,114,32,116,104,101,32,110,97,109,101,44,32,97,32,112,111,105,110,116, 101,114,32,116,111,32,116,104,101,32,99,108,97,115,115,32,104,97,110,100, 108,101,114,32,40,97,49,41,32,97,110,100,32,97,32,112,111,105,110,116, 101,114,32,116,111,32,116,104,101,32,119,111,114,100,32,100,101,102,105,110, 105,116,105,111,110,32,40,97,50,41,32,71,101,110,101,114,97,108,108,121, 32,116,104,105,115,32,119,111,110,39,116,32,98,101,32,117,115,101,100,32, 100,105,114,101,99,116,108,121,46,0,71,105,118,101,110,32,97,32,100,105, 99,116,105,111,110,97,114,121,32,104,101,97,100,101,114,44,32,114,101,116, 117,114,110,32,116,104,101,32,99,108,97,115,115,32,102,105,101,108,100,46, 0,72,111,111,107,46,32,67,114,101,97,116,101,32,97,32,110,101,119,32, 100,105,99,116,105,111,110,97,114,121,32,104,101,97,100,101,114,32,110,97, 109,101,100,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,115,116, 114,105,110,103,46,32,84,104,101,32,110,101,119,32,104,101,97,100,101,114, 32,119,105,108,108,32,112,111,105,110,116,32,116,111,32,96,104,101,114,101, 96,32,97,110,100,32,104,97,118,101,32,97,32,99,108,97,115,115,32,111, 102,32,96,99,108,97,115,115,58,100,97,116,97,96,46,0,69,120,101,99, 117,116,101,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,113,117, 111,116,101,32,111,110,99,101,32,102,111,114,32,101,97,99,104,32,104,101, 97,100,101,114,32,105,110,32,116,104,101,32,100,105,99,116,105,111,110,97, 114,121,46,32,66,101,102,111,114,101,32,114,117,110,110,105,110,103,32,116, 104,101,32,113,117,111,116,101,44,32,116,104,105,115,32,97,108,115,111,32, 112,117,115,104,101,115,32,97,32,112,111,105,110,116,101,114,32,116,111,32, 116,104,101,32,104,101,97,100,101,114,32,111,110,116,111,32,116,104,101,32, 115,116,97,99,107,46,0,71,105,118,101,110,32,97,32,100,105,99,116,105, 111,110,97,114,121,32,104,101,97,100,101,114,44,32,114,101,116,117,114,110, 32,116,104,101,32,104,97,115,104,32,102,105,101,108,100,46,0,82,101,116, 117,114,110,32,116,104,101,32,109,111,115,116,32,114,101,99,101,110,116,32, 100,105,99,116,105,111,110,97,114,121,32,104,101,97,100,101,114,46,0,82, 101,116,117,114,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116, 104,101,32,99,108,97,115,115,32,102,105,101,108,100,32,111,102,32,116,104, 101,32,109,111,115,116,32,114,101,99,101,110,116,32,100,105,99,116,105,111, 110,97,114,121,32,104,101,97,100,101,114,46,0,82,101,116,117,114,110,32, 97,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,110,97,109, 101,32,102,105,101,108,100,32,111,102,32,116,104,101,32,109,111,115,116,32, 114,101,99,101,110,116,32,100,105,99,116,105,111,110,97,114,121,32,104,101, 97,100,101,114,46,0,82,101,116,117,114,110,32,97,32,112,111,105,110,116, 101,114,32,116,111,32,116,104,101,32,120,116,32,102,105,101,108,100,32,111, 102,32,116,104,101,32,109,111,115,116,32,114,101,99,101,110,116,32,100,105, 99,116,105,111,110,97,114,121,32,104,101,97,100,101,114,46,0,71,105,118, 101,110,32,97,32,100,105,99,116,105,111,110,97,114,121,32,104,101,97,100, 101,114,44,32,114,101,116,117,114,110,32,116,104,101,32,108,105,110,107,32, 102,105,101,108,100,46,0,76,111,111,107,117,112,32,116,104,101,32,115,112, 101,99,105,102,105,101,100,32,110,97,109,101,32,105,110,32,116,104,101,32, 100,105,99,116,105,111,110,97,114,121,32,97,110,100,32,114,101,116,117,114, 110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,105,116,115,32,100, 105,99,116,105,111,110,97,114,121,32,104,101,97,100,101,114,46,32,84,104, 105,115,32,114,101,116,117,114,110,115,32,122,101,114,111,32,105,102,32,116, 104,101,32,119,111,114,100,32,105,115,32,110,111,116,32,102,111,117,110,100, 46,32,84,104,105,115,32,97,108,115,111,32,115,101,116,115,32,97,110,32, 105,110,116,101,114,110,97,108,32,118,97,114,105,97,98,108,101,32,40,39, 119,104,105,99,104,39,32,105,110,32,114,101,116,114,111,46,109,117,114,105, 41,32,116,111,32,116,104,101,32,104,101,97,100,101,114,32,97,100,100,114, 101,115,115,46,0,76,111,111,107,117,112,32,116,104,101,32,115,112,101,99, 105,102,105,101,100,32,97,100,100,114,101,115,115,32,105,110,32,116,104,101, 32,100,105,99,116,105,111,110,97,114,121,32,97,110,100,32,114,101,116,117, 114,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,105,116,115,32, 100,105,99,116,105,111,110,97,114,121,32,104,101,97,100,101,114,46,32,84, 104,105,115,32,114,101,116,117,114,110,115,32,122,101,114,111,32,105,102,32, 116,104,101,32,119,111,114,100,32,105,115,32,110,111,116,32,102,111,117,110, 100,46,0,71,105,118,101,110,32,97,32,100,105,99,116,105,111,110,97,114, 121,32,104,101,97,100,101,114,44,32,114,101,116,117,114,110,32,116,104,101, 32,110,97,109,101,32,102,105,101,108,100,46,0,85,112,100,97,116,101,32, 116,104,101,32,104,97,115,104,101,115,32,102,111,114,32,97,108,108,32,118, 105,115,105,98,108,101,32,119,111,114,100,115,32,105,110,32,116,104,101,32, 100,105,99,116,105,111,110,97,114,121,46,0,83,101,116,32,116,104,101,32, 96,100,58,115,111,117,114,99,101,96,32,102,105,101,108,100,32,111,102,32, 116,104,101,32,104,101,97,100,101,114,32,102,111,114,32,116,104,101,32,110, 97,109,101,100,32,119,111,114,100,32,40,115,50,41,32,116,111,32,115,116, 114,105,110,103,32,40,115,49,41,46,32,84,104,101,32,115,116,114,105,110, 103,32,119,105,108,108,32,110,111,116,32,98,101,32,100,117,112,108,105,99, 97,116,101,100,46,0,71,105,118,101,110,32,97,32,100,105,99,116,105,111, 110,97,114,121,32,104,101,97,100,101,114,44,32,114,101,116,117,114,110,32, 116,104,101,32,115,111,117,114,99,101,32,102,105,101,108,100,46,0,67,104, 97,110,103,101,32,100,105,99,116,105,111,110,97,114,121,32,115,101,97,114, 99,104,32,116,111,32,117,115,101,32,104,97,115,104,101,100,32,110,97,109, 101,32,99,111,109,112,97,114,105,111,110,115,46,0,67,104,97,110,103,101, 32,100,105,99,116,105,111,110,97,114,121,32,115,101,97,114,99,104,32,116, 111,32,117,115,101,32,102,117,108,108,32,110,97,109,101,32,99,111,109,112, 97,114,105,111,110,115,46,0,71,105,118,101,110,32,97,32,100,105,99,116, 105,111,110,97,114,121,32,104,101,97,100,101,114,44,32,114,101,116,117,114, 110,32,116,104,101,32,120,116,32,102,105,101,108,100,46,0,67,104,97,110, 103,101,32,116,104,101,32,99,108,97,115,115,32,111,102,32,116,104,101,32, 109,111,115,116,32,114,101,99,101,110,116,108,121,32,100,101,102,105,110,101, 100,32,119,111,114,100,32,116,111,32,96,99,108,97,115,115,58,100,97,116, 97,96,46,0,83,101,116,32,96,66,97,115,101,96,32,116,111,32,100,101, 99,105,109,97,108,46,0,82,101,116,117,114,110,32,116,104,101,32,110,117, 109,98,101,114,32,111,102,32,105,116,101,109,115,32,111,110,32,116,104,101, 32,115,116,97,99,107,46,0,84,101,109,112,111,114,97,114,105,108,121,32, 114,101,109,111,118,101,32,110,32,102,114,111,109,32,116,104,101,32,115,116, 97,99,107,44,32,101,120,101,99,117,116,101,32,116,104,101,32,113,117,111, 116,97,116,105,111,110,44,32,97,110,100,32,116,104,101,110,32,114,101,115, 116,111,114,101,32,110,32,116,111,32,116,104,101,32,115,116,97,99,107,46, 0,65,116,116,97,99,104,32,97,110,32,97,99,116,105,111,110,32,116,111, 32,116,104,101,32,109,111,115,116,32,114,101,99,101,110,116,108,121,32,99, 114,101,97,116,101,100,32,119,111,114,100,46,32,84,104,105,115,32,105,115, 32,117,115,101,100,32,105,110,32,97,32,109,97,110,110,101,114,32,115,105, 109,105,108,97,114,32,116,111,32,67,82,69,65,84,69,47,68,79,69,83, 62,32,105,110,32,116,114,97,100,105,116,105,111,110,97,108,32,70,111,114, 116,104,46,0,68,105,115,99,97,114,100,32,116,104,101,32,116,111,112,32, 118,97,108,117,101,32,111,110,32,116,104,101,32,115,116,97,99,107,46,0, 82,101,109,111,118,101,32,116,111,112,32,116,119,111,32,105,116,101,109,115, 32,111,110,32,116,104,101,32,115,116,97,99,107,46,0,68,105,115,112,108, 97,121,32,116,104,101,32,105,116,101,109,115,32,111,110,32,116,104,101,32, 100,97,116,97,32,115,116,97,99,107,46,0,68,117,112,108,105,99,97,116, 101,32,116,104,101,32,116,111,112,32,105,116,101,109,32,111,110,32,116,104, 101,32,115,116,97,99,107,46,0,68,117,112,108,105,99,97,116,101,32,116, 104,101,32,116,111,112,32,116,119,111,32,105,116,101,109,115,32,111,110,32, 116,104,101,32,115,116,97,99,107,46,0,67,111,110,115,116,97,110,116,46, 32,78,101,103,97,116,105,118,101,32,105,110,102,105,110,105,116,121,46,32, 32,70,111,114,32,101,110,99,111,100,101,100,32,102,108,111,97,116,105,110, 103,45,112,111,105,110,116,32,118,97,108,117,101,115,46,0,73,115,32,101, 110,99,111,100,101,100,32,118,97,108,117,101,32,110,101,103,97,116,105,118, 101,32,105,110,102,105,110,105,116,121,63,0,67,111,110,115,116,97,110,116, 46,32,73,110,102,105,110,105,116,121,46,32,70,111,114,32,101,110,99,111, 100,101,100,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118, 97,108,117,101,115,46,0,67,111,110,115,116,97,110,116,46,32,77,97,120, 105,109,117,109,32,118,97,108,117,101,46,32,70,111,114,32,101,110,99,111, 100,101,100,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118, 97,108,117,101,115,46,0,67,111,110,115,116,97,110,116,46,32,77,105,110, 105,109,117,109,32,118,97,108,117,101,46,32,70,111,114,32,101,110,99,111, 100,101,100,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118, 97,108,117,101,115,46,0,67,111,110,115,116,97,110,116,46,32,78,111,116, 32,97,32,78,117,109,98,101,114,46,32,70,111,114,32,101,110,99,111,100, 101,100,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97, 108,117,101,115,46,0,67,111,110,115,116,114,97,105,110,32,116,104,101,32, 101,110,99,111,100,101,100,32,118,97,108,117,101,32,116,111,32,116,104,101, 32,97,108,108,111,119,97,98,108,101,32,114,97,110,103,101,46,0,73,115, 32,101,110,99,111,100,101,100,32,118,97,108,117,101,32,105,110,102,105,110, 105,116,121,63,0,73,115,32,101,110,99,111,100,101,100,32,118,97,108,117, 101,32,97,116,32,116,104,101,32,109,97,120,105,109,117,109,63,0,73,115, 32,101,110,99,111,100,101,100,32,118,97,108,117,101,32,97,116,32,116,104, 101,32,109,105,110,105,109,117,109,63,0,82,101,116,117,114,110,32,96,84, 82,85,69,96,32,105,102,32,116,104,101,32,101,110,99,111,100,101,100,32, 118,97,108,117,101,32,105,115,32,97,32,118,97,108,105,100,32,110,117,109, 98,101,114,44,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101, 114,119,105,115,101,46,0,73,115,32,101,110,99,111,100,101,100,32,118,97, 108,117,101,32,97,32,78,97,110,63,0,68,105,115,112,108,97,121,32,97, 110,32,101,110,99,111,100,101,100,32,110,117,109,98,101,114,46,0,68,101, 99,111,100,101,32,97,110,32,101,110,99,111,100,101,100,32,102,108,111,97, 116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,46,0,82,101, 116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,116,104,101,32,118, 97,108,117,101,32,105,115,32,122,101,114,111,44,32,111,114,32,96,70,65, 76,83,69,96,32,111,116,104,101,114,119,105,115,101,46,0,67,111,109,112, 97,114,101,32,116,119,111,32,118,97,108,117,101,115,32,102,111,114,32,101, 113,117,97,108,105,116,121,46,32,82,101,116,117,114,110,115,32,96,84,82, 85,69,96,32,105,102,32,116,104,101,121,32,97,114,101,32,101,113,117,97, 108,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105, 115,101,46,0,69,114,114,111,114,32,104,97,110,100,108,101,114,32,102,111, 114,32,100,97,116,97,32,115,116,97,99,107,32,111,118,101,114,102,108,111, 119,0,69,114,114,111,114,32,104,97,110,100,108,101,114,32,102,111,114,32, 100,97,116,97,32,115,116,97,99,107,32,117,110,100,101,114,102,108,111,119, 46,0,86,101,99,116,111,114,101,100,46,32,69,114,114,111,114,32,104,97, 110,100,108,101,114,46,32,67,97,108,108,101,100,32,119,104,101,110,32,97, 32,119,111,114,100,32,105,115,32,110,111,116,32,102,111,117,110,100,32,98, 121,32,96,105,110,116,101,114,112,114,101,116,96,46,0,83,101,116,32,116, 104,101,32,100,101,102,97,117,108,116,32,101,114,114,111,114,32,104,97,110, 100,108,101,114,115,32,102,111,114,32,118,97,114,105,111,117,115,32,99,111, 110,100,105,116,105,111,110,115,46,0,83,101,116,32,101,114,114,111,114,32, 104,97,110,100,108,101,114,32,102,111,114,32,101,114,114,111,114,32,99,111, 100,101,32,78,46,32,0,77,117,108,116,105,112,108,121,32,116,119,111,32, 102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,110,117,109,98,101, 114,115,44,32,114,101,116,117,114,110,105,110,103,32,116,104,101,32,114,101, 115,117,108,116,46,0,65,100,100,32,116,119,111,32,102,108,111,97,116,105, 110,103,45,112,111,105,110,116,32,110,117,109,98,101,114,115,44,32,114,101, 116,117,114,110,105,110,103,32,116,104,101,32,114,101,115,117,108,116,46,0, 83,117,98,116,114,97,99,116,32,70,50,32,102,114,111,109,32,70,49,32, 114,101,116,117,114,110,105,110,103,32,116,104,101,32,114,101,115,117,108,116, 46,0,82,101,116,117,114,110,32,97,32,118,97,108,117,101,32,99,111,114, 114,101,115,112,111,110,100,105,110,103,32,116,111,32,110,101,103,97,116,105, 118,101,32,105,110,102,105,110,105,116,121,0,67,111,109,112,97,114,101,32, 116,119,111,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118, 97,108,117,101,115,32,102,111,114,32,105,110,101,113,117,97,108,105,116,121, 46,32,82,101,116,117,114,110,115,32,96,84,82,85,69,96,32,105,102,32, 116,104,101,121,32,97,114,101,32,110,111,116,32,101,113,117,97,108,32,111, 114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115,101,46, 0,82,101,116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,102,108, 111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,32,105, 115,32,45,73,78,70,32,111,114,32,96,70,65,76,83,69,96,32,111,116, 104,101,114,119,105,115,101,46,0,68,105,118,105,100,101,32,102,108,111,97, 116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,32,70,49,32, 98,121,32,70,50,46,0,82,101,116,117,114,110,32,116,104,101,32,102,108, 111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,32,102, 111,114,32,69,117,108,101,114,39,115,32,110,117,109,98,101,114,46,0,72, 111,111,107,46,32,82,101,116,117,114,110,32,97,32,99,111,110,115,116,97, 110,116,32,117,115,101,100,32,97,115,32,116,104,101,32,115,99,97,108,105, 110,103,32,102,97,99,116,111,114,32,102,111,114,32,116,104,101,32,101,58, 32,119,111,114,100,115,46,0,82,101,116,117,114,110,32,97,32,118,97,108, 117,101,32,99,111,114,114,101,115,112,111,110,100,105,110,103,32,116,111,32, 112,111,115,105,116,105,118,101,32,105,110,102,105,110,105,116,121,0,82,101, 116,117,114,110,32,97,32,118,97,108,117,101,32,99,111,114,114,101,115,112, 111,110,100,105,110,103,32,116,111,32,78,97,78,0,82,101,116,117,114,110, 32,116,104,101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32, 118,97,108,117,101,32,102,111,114,32,80,73,46,0,82,101,116,117,114,110, 32,116,104,101,32,97,98,115,111,108,117,116,101,32,118,97,108,117,101,32, 102,111,114,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116, 32,118,97,108,117,101,46,0,82,101,116,117,114,110,32,116,104,101,32,97, 114,99,32,99,111,115,105,110,101,32,111,102,32,97,32,102,108,111,97,116, 105,110,103,45,112,111,105,110,116,32,110,117,109,98,101,114,46,0,82,101, 116,117,114,110,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,105, 116,101,109,115,32,111,110,32,116,104,101,32,97,108,116,101,114,110,97,116, 101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,115,116,97, 99,107,46,0,82,101,116,117,114,110,32,116,104,101,32,97,114,99,32,115, 105,110,101,32,111,102,32,97,32,102,108,111,97,116,105,110,103,45,112,111, 105,110,116,32,110,117,109,98,101,114,46,0,82,101,116,117,114,110,32,116, 104,101,32,97,114,99,32,116,97,110,103,101,110,116,32,111,102,32,97,32, 102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,110,117,109,98,101, 114,46,0,82,101,116,117,114,110,32,84,82,85,69,32,105,102,32,110,117, 109,98,101,114,32,105,115,32,98,101,116,119,101,101,110,32,116,104,101,32, 108,111,119,101,114,32,40,108,41,32,97,110,100,32,117,112,112,101,114,32, 40,117,41,32,98,111,117,110,100,115,46,32,73,102,32,110,111,116,44,32, 114,101,116,117,114,110,32,70,65,76,83,69,46,32,84,104,105,115,32,105, 115,32,105,110,99,108,117,115,105,118,101,32,111,102,32,116,104,101,32,108, 105,109,105,116,115,46,0,73,102,32,96,110,96,32,105,115,32,101,113,117, 97,108,32,116,111,32,96,109,96,44,32,100,114,111,112,32,98,111,116,104, 32,97,110,100,32,101,120,101,99,117,116,101,32,116,104,101,32,115,112,101, 99,105,102,105,101,100,32,113,117,111,116,101,32,98,101,102,111,114,101,32, 101,120,105,116,105,110,103,32,116,104,101,32,99,97,108,108,105,110,103,32, 119,111,114,100,46,32,73,102,32,110,111,116,32,101,113,117,97,108,44,32, 108,101,97,118,101,32,96,110,96,32,111,110,32,116,104,101,32,115,116,97, 99,107,32,97,110,100,32,108,101,116,32,101,120,101,99,117,116,105,111,110, 32,99,111,110,116,105,110,117,101,46,0,82,101,116,117,114,110,32,116,104, 101,32,115,109,97,108,108,101,115,116,32,105,110,116,101,103,114,97,108,32, 118,97,108,117,101,32,103,114,101,97,116,101,114,32,116,104,97,110,32,111, 114,32,101,113,117,97,108,32,116,111,32,116,104,101,32,115,112,101,99,105, 102,105,101,100,32,118,97,108,117,101,46,0,82,101,116,117,114,110,32,116, 104,101,32,99,111,115,105,110,101,32,111,102,32,97,32,102,108,111,97,116, 105,110,103,45,112,111,105,110,116,32,110,117,109,98,101,114,46,0,68,101, 99,114,101,109,101,110,116,32,110,32,98,121,32,111,110,101,46,0,82,101, 116,117,114,110,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,105, 116,101,109,115,32,111,110,32,116,104,101,32,102,108,111,97,116,105,110,103, 45,112,111,105,110,116,32,115,116,97,99,107,46,0,68,105,115,99,97,114, 100,32,116,104,101,32,116,111,112,32,105,116,101,109,32,111,110,32,116,104, 101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,115,116,97, 99,107,46,0,82,101,109,111,118,101,32,116,111,112,32,116,119,111,32,105, 116,101,109,115,32,111,110,32,116,104,101,32,115,116,97,99,107,46,0,68, 105,115,112,108,97,121,32,116,104,101,32,105,116,101,109,115,32,111,110,32, 116,104,101,32,97,108,116,101,114,110,97,116,101,32,102,108,111,97,116,105, 110,103,45,112,111,105,110,116,32,115,116,97,99,107,46,0,68,105,115,112, 108,97,121,32,116,104,101,32,105,116,101,109,115,32,111,110,32,116,104,101, 32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,115,116,97,99, 107,46,0,68,117,112,108,105,99,97,116,101,32,116,104,101,32,116,111,112, 32,105,116,101,109,32,111,110,32,116,104,101,32,102,108,111,97,116,105,110, 103,45,112,111,105,110,116,32,115,116,97,99,107,46,0,68,117,112,108,105, 99,97,116,101,32,116,104,101,32,116,111,112,32,116,119,111,32,105,116,101, 109,115,32,111,110,32,116,104,101,32,115,116,97,99,107,46,0,67,111,109, 112,97,114,101,32,116,119,111,32,102,108,111,97,116,105,110,103,45,112,111, 105,110,116,32,118,97,108,117,101,115,32,102,111,114,32,101,113,117,97,108, 105,116,121,46,32,82,101,116,117,114,110,115,32,96,84,82,85,69,96,32, 105,102,32,116,104,101,121,32,97,114,101,32,101,113,117,97,108,32,111,114, 32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115,101,46,0, 70,101,116,99,104,32,97,32,115,116,111,114,101,100,32,102,108,111,97,116, 105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,46,0,80,101,114, 102,111,114,109,32,97,32,109,97,116,104,101,109,97,116,105,99,97,108,32, 102,108,111,111,114,32,111,112,101,114,97,116,105,111,110,32,111,110,32,116, 104,101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97, 108,117,101,46,0,67,111,109,112,97,114,101,32,116,119,111,32,102,108,111, 97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,115,32,102, 111,114,32,103,114,101,97,116,101,114,32,116,104,97,110,46,0,73,110,99, 114,101,109,101,110,116,32,110,32,98,121,32,111,110,101,46,0,82,101,116, 117,114,110,32,96,84,82,85,69,96,32,105,102,32,102,108,111,97,116,105, 110,103,45,112,111,105,110,116,32,118,97,108,117,101,32,105,115,32,73,78, 70,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105, 115,101,46,0,82,101,116,117,114,110,32,110,32,105,102,32,105,116,32,105, 115,32,119,105,116,104,105,110,32,116,104,101,32,108,111,119,101,114,32,40, 108,41,32,97,110,100,32,117,112,112,101,114,32,40,117,41,32,98,111,117, 110,100,115,46,32,73,102,32,111,117,116,115,105,100,101,32,116,104,101,32, 98,111,117,110,100,115,44,32,114,101,116,117,114,110,32,116,104,101,32,99, 108,111,115,101,115,32,98,111,117,110,100,97,114,121,32,118,97,108,117,101, 46,0,82,101,116,117,114,110,32,108,111,103,40,70,49,41,32,102,111,114, 32,98,97,115,101,32,70,50,32,102,111,114,32,102,108,111,97,116,105,110, 103,45,112,111,105,110,116,32,118,97,108,117,101,115,46,0,67,111,109,112, 97,114,101,32,116,119,111,32,102,108,111,97,116,105,110,103,45,112,111,105, 110,116,32,118,97,108,117,101,115,32,102,111,114,32,108,101,115,115,32,116, 104,97,110,46,0,82,101,116,117,114,110,32,116,104,101,32,103,114,101,97, 116,101,114,32,111,102,32,116,119,111,32,118,97,108,117,101,115,46,0,82, 101,116,117,114,110,32,116,104,101,32,108,101,115,115,101,114,32,111,102,32, 116,119,111,32,118,97,108,117,101,115,46,0,82,101,116,117,114,110,32,96, 84,82,85,69,96,32,105,102,32,102,108,111,97,116,105,110,103,45,112,111, 105,110,116,32,118,97,108,117,101,32,105,115,32,78,97,78,32,111,114,32, 96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115,101,46,0,73, 110,118,101,114,116,32,116,104,101,32,115,105,103,110,32,111,102,32,116,104, 101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108, 117,101,46,0,82,101,116,117,114,110,32,96,84,82,85,69,96,32,105,102, 32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117, 101,32,105,115,32,110,101,103,97,116,105,118,101,32,111,114,32,96,70,65, 76,83,69,96,32,105,102,32,110,111,116,46,0,82,101,109,111,118,101,32, 116,104,101,32,115,101,99,111,110,100,32,105,116,101,109,32,102,114,111,109, 32,116,104,101,32,115,116,97,99,107,46,0,80,117,116,32,97,32,99,111, 112,121,32,111,102,32,116,104,101,32,115,101,99,111,110,100,32,102,108,111, 97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,32,111,118, 101,114,32,116,104,101,32,116,111,112,32,111,110,101,46,0,80,111,112,32, 97,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108, 117,101,32,102,114,111,109,32,116,104,101,32,97,108,116,101,114,110,97,116, 101,32,115,116,97,99,107,46,0,82,101,116,117,114,110,32,96,84,82,85, 69,96,32,105,102,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116, 32,118,97,108,117,101,32,105,115,32,112,111,115,105,116,105,118,101,32,111, 114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115,101,46, 0,82,101,116,117,114,110,32,70,49,94,70,50,32,102,111,114,32,102,108, 111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,115,46, 0,80,117,115,104,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105, 110,116,32,118,97,108,117,101,32,116,111,32,97,110,32,97,108,116,101,114, 110,97,116,105,118,101,32,115,116,97,99,107,46,0,68,105,115,112,108,97, 121,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,110, 117,109,98,101,114,46,0,82,111,116,97,116,101,32,116,104,101,32,116,111, 112,32,116,104,114,101,101,32,118,97,108,117,101,115,46,0,82,111,117,110, 100,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118, 97,108,117,101,46,0,82,101,116,117,114,110,32,49,32,105,102,32,116,104, 101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108, 117,101,32,105,115,32,112,111,115,105,116,105,118,101,32,111,114,32,45,49, 32,105,102,32,105,116,32,105,115,32,110,101,103,97,116,105,118,101,46,0, 82,101,116,117,114,110,32,116,104,101,32,115,113,117,97,114,101,32,114,111, 111,116,32,111,102,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105, 110,116,32,110,117,109,98,101,114,46,0,82,101,116,117,114,110,32,116,104, 101,32,115,113,117,97,114,101,32,111,102,32,97,32,102,108,111,97,116,105, 110,103,45,112,111,105,110,116,32,110,117,109,98,101,114,46,0,82,101,116, 117,114,110,32,116,104,101,32,115,105,110,101,32,111,102,32,97,32,102,108, 111,97,116,105,110,103,45,112,111,105,110,116,32,110,117,109,98,101,114,46, 0,82,101,116,117,114,110,32,116,104,101,32,115,113,117,97,114,101,32,114, 111,111,116,32,111,102,32,97,32,102,108,111,97,116,105,110,103,45,112,111, 105,110,116,32,110,117,109,98,101,114,46,0,82,101,116,117,114,110,32,116, 104,101,32,115,113,117,97,114,101,32,111,102,32,97,32,102,108,111,97,116, 105,110,103,45,112,111,105,110,116,32,110,117,109,98,101,114,46,0,83,116, 111,114,101,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116, 32,118,97,108,117,101,32,116,111,32,116,104,101,32,115,112,101,99,105,102, 105,101,100,32,109,101,109,111,114,121,32,108,111,99,97,116,105,111,110,46, 0,69,120,99,104,97,110,103,101,32,116,104,101,32,116,111,112,32,97,110, 100,32,115,101,99,111,110,100,32,105,116,101,109,115,32,111,110,32,116,104, 101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,115,116,97, 99,107,46,0,82,101,116,117,114,110,32,116,104,101,32,116,97,110,103,101, 110,116,32,111,102,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105, 110,116,32,110,117,109,98,101,114,46,0,69,110,99,111,100,101,32,116,104, 101,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108, 117,101,32,116,111,32,97,110,32,105,110,116,101,103,101,114,46,0,67,111, 110,118,101,114,116,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105, 110,116,32,118,97,108,117,101,32,105,110,116,111,32,97,32,110,117,109,98, 101,114,46,0,67,111,110,118,101,114,116,32,97,32,102,108,111,97,116,105, 110,103,45,112,111,105,110,116,32,118,97,108,117,101,32,105,110,116,111,32, 97,32,115,116,114,105,110,103,46,0,84,117,99,107,32,97,32,99,111,112, 121,32,111,102,32,116,104,101,32,116,111,112,32,102,108,111,97,116,105,110, 103,45,112,111,105,110,116,32,118,97,108,117,101,32,117,110,100,101,114,32, 116,104,101,32,115,101,99,111,110,100,32,111,110,101,46,0,70,101,116,99, 104,32,116,104,101,32,118,97,108,117,101,32,115,116,111,114,101,100,32,97, 116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100,100,114, 101,115,115,46,0,70,101,116,99,104,32,116,104,101,32,118,97,108,117,101, 32,115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112,101,99,105, 102,105,101,100,32,97,100,100,114,101,115,115,46,32,82,101,116,117,114,110, 115,32,116,104,101,32,110,101,120,116,32,97,100,100,114,101,115,115,32,97, 110,100,32,116,104,101,32,118,97,108,117,101,46,0,73,110,118,111,107,101, 32,97,110,32,70,70,73,32,102,117,110,99,116,105,111,110,46,32,83,101, 116,32,116,104,101,32,115,116,97,99,107,32,97,115,32,110,101,101,100,101, 100,44,32,97,110,100,32,112,97,115,115,32,116,104,101,32,70,70,73,32, 104,97,110,100,108,101,32,116,111,32,116,104,105,115,46,0,77,97,112,32, 105,110,32,97,32,115,121,109,98,111,108,32,102,114,111,109,32,97,32,115, 104,97,114,101,100,32,108,105,98,114,97,114,121,32,111,114,32,111,98,106, 101,99,116,32,102,105,108,101,46,32,82,101,116,117,114,110,115,32,97,110, 32,70,70,73,32,104,97,110,100,108,101,46,0,79,112,101,110,32,97,32, 115,104,97,114,101,100,32,108,105,98,114,97,114,121,32,111,114,32,111,98, 106,101,99,116,32,102,105,108,101,46,0,84,114,105,103,103,101,114,32,97, 110,32,105,47,111,32,111,112,101,114,97,116,105,111,110,32,117,115,105,110, 103,32,116,104,101,32,70,70,73,32,100,101,118,105,99,101,46,0,67,111, 110,115,116,97,110,116,32,102,111,114,32,111,112,101,110,105,110,103,32,97, 32,102,105,108,101,32,105,110,32,65,80,80,69,78,68,32,109,111,100,101, 46,0,67,111,110,115,116,97,110,116,32,102,111,114,32,111,112,101,110,105, 110,103,32,97,32,102,105,108,101,32,105,110,32,82,69,65,68,32,109,111, 100,101,46,0,67,111,110,115,116,97,110,116,32,102,111,114,32,111,112,101, 110,105,110,103,32,97,32,102,105,108,101,32,105,110,32,82,69,65,68,32, 38,32,87,82,73,84,69,32,109,111,100,101,46,0,67,111,110,115,116,97, 110,116,32,102,111,114,32,111,112,101,110,105,110,103,32,97,32,102,105,108, 101,32,105,110,32,87,82,73,84,69,32,109,111,100,101,46,0,71,105,118, 101,110,32,97,32,102,105,108,101,32,104,97,110,100,108,101,44,32,99,108, 111,115,101,32,116,104,101,32,102,105,108,101,46,0,68,101,108,101,116,101, 32,116,104,101,32,110,97,109,101,100,32,102,105,108,101,46,0,71,105,118, 101,110,32,97,32,102,105,108,101,32,110,97,109,101,44,32,114,101,116,117, 114,110,32,96,84,82,85,69,96,32,105,102,32,105,116,32,101,120,105,115, 116,115,32,111,114,32,96,70,65,76,83,69,96,32,105,102,32,105,116,32, 100,111,101,115,32,110,111,116,46,0,71,105,118,101,110,32,97,32,102,105, 108,101,32,104,97,110,100,108,101,44,32,102,108,117,115,104,32,97,110,121, 32,112,101,110,100,105,110,103,32,119,114,105,116,101,115,32,116,111,32,100, 105,115,107,46,0,71,105,118,101,110,32,97,32,102,105,108,101,32,110,97, 109,101,44,32,111,112,101,110,32,105,116,32,97,110,100,32,114,117,110,32, 116,104,101,32,113,117,111,116,101,32,111,110,99,101,32,102,111,114,32,101, 97,99,104,32,108,105,110,101,32,105,110,32,116,104,101,32,102,105,108,101, 46,0,79,112,101,110,32,97,32,110,97,109,101,100,32,102,105,108,101,32, 40,115,41,32,119,105,116,104,32,116,104,101,32,103,105,118,101,110,32,109, 111,100,101,32,40,109,41,46,32,82,101,116,117,114,110,115,32,97,32,104, 97,110,100,108,101,32,105,100,101,110,116,105,102,121,105,110,103,32,116,104, 101,32,102,105,108,101,46,0,79,112,101,110,32,97,32,102,105,108,101,32, 102,111,114,32,114,101,97,100,105,110,103,32,38,32,119,114,105,116,105,110, 103,46,32,82,101,116,117,114,110,115,32,116,104,101,32,115,105,122,101,32, 40,78,79,83,41,32,97,110,100,32,97,32,102,105,108,101,32,73,68,32, 40,84,79,83,41,0,79,112,101,110,32,97,32,102,105,108,101,32,102,111, 114,32,114,101,97,100,105,110,103,46,32,82,101,116,117,114,110,115,32,116, 104,101,32,115,105,122,101,32,40,78,79,83,41,32,97,110,100,32,97,32, 102,105,108,101,32,73,68,32,40,84,79,83,41,0,79,112,101,110,32,97, 32,102,105,108,101,32,102,111,114,32,119,114,105,116,105,110,103,46,32,82, 101,116,117,114,110,115,32,116,104,101,32,102,105,108,101,32,73,68,0,84, 114,105,103,103,101,114,32,97,32,102,105,108,101,32,73,47,79,32,111,112, 101,114,97,116,105,111,110,46,32,84,104,105,115,32,105,115,32,110,111,116, 32,105,110,116,101,110,100,101,100,32,116,111,32,98,101,32,117,115,101,100, 32,100,105,114,101,99,116,108,121,46,0,71,105,118,101,110,32,97,32,102, 105,108,101,32,104,97,110,100,108,101,44,32,114,101,97,100,32,97,110,100, 32,114,101,116,117,114,110,32,116,104,101,32,110,101,120,116,32,98,121,116, 101,32,105,110,32,105,116,46,0,71,105,118,101,110,32,97,32,102,105,108, 101,32,104,97,110,100,108,101,44,32,114,101,97,100,32,97,32,108,105,110, 101,32,97,110,100,32,114,101,116,117,114,110,32,97,32,112,111,105,110,116, 101,114,32,116,111,32,105,116,46,0,71,105,118,101,110,32,97,32,112,111, 105,110,116,101,114,44,32,97,32,99,111,117,110,116,44,32,97,110,100,32, 97,32,102,105,108,101,32,104,97,110,100,108,101,44,32,114,101,97,100,32, 97,110,100,32,115,116,111,114,101,32,116,104,101,32,114,101,113,117,101,115, 116,101,100,32,110,117,109,98,101,114,32,111,102,32,98,121,116,101,115,32, 105,110,116,111,32,109,101,109,111,114,121,44,32,115,116,97,114,116,105,110, 103,32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97, 100,100,114,101,115,115,46,0,71,105,118,101,110,32,97,32,102,105,108,101, 32,104,97,110,100,108,101,44,32,114,101,97,100,32,97,110,100,32,114,101, 116,117,114,110,32,116,104,101,32,110,101,120,116,32,99,104,97,114,97,99, 116,101,114,32,105,110,32,105,116,46,32,73,102,32,99,111,109,112,105,108, 101,100,32,119,105,116,104,32,85,84,70,51,50,32,115,117,112,112,111,114, 116,32,116,104,105,115,32,119,105,108,108,32,114,101,97,100,32,97,110,100, 32,99,111,110,118,101,114,116,32,85,84,70,56,46,0,77,111,118,101,32, 116,104,101,32,99,117,114,114,101,110,116,32,111,102,102,115,101,116,32,105, 110,116,111,32,97,32,102,105,108,101,32,116,111,32,116,104,101,32,115,112, 101,99,105,102,105,101,100,32,111,110,101,46,0,71,105,118,101,110,32,97, 32,102,105,108,101,32,104,97,110,100,108,101,44,32,114,101,116,117,114,110, 32,116,104,101,32,115,105,122,101,32,111,102,32,116,104,101,32,102,105,108, 101,32,40,105,110,32,98,121,116,101,115,41,46,0,71,105,118,101,110,32, 97,110,32,97,100,100,114,101,115,115,32,97,110,100,32,97,32,102,105,108, 101,32,110,97,109,101,44,32,114,101,97,100,32,116,104,101,32,102,105,108, 101,32,99,111,110,116,101,110,116,115,32,105,110,116,111,32,109,101,109,111, 114,121,32,115,116,97,114,116,105,110,103,32,97,116,32,116,104,101,32,97, 100,100,114,101,115,115,46,0,71,105,118,101,110,32,97,32,115,116,114,105, 110,103,32,40,115,49,41,32,97,110,100,32,97,32,102,105,108,101,32,110, 97,109,101,32,40,115,50,41,44,32,119,114,105,116,101,32,116,104,101,32, 115,116,114,105,110,103,32,105,110,116,111,32,116,104,101,32,102,105,108,101, 44,32,114,101,112,108,97,99,105,110,103,32,97,110,121,32,101,120,105,115, 116,105,110,103,32,99,111,110,116,101,110,116,46,0,71,105,118,101,110,32, 97,32,102,105,108,101,32,104,97,110,100,108,101,44,32,114,101,116,117,114, 110,32,116,104,101,32,99,117,114,114,101,110,116,32,111,102,102,115,101,116, 32,105,110,32,116,104,101,32,102,105,108,101,46,0,87,114,105,116,101,32, 97,32,98,121,116,101,32,116,111,32,116,104,101,32,102,105,108,101,32,114, 101,112,114,101,115,101,110,116,101,100,32,98,121,32,116,104,101,32,104,97, 110,100,108,101,46,0,87,114,105,116,101,32,110,32,98,121,116,101,115,32, 116,111,32,116,104,101,32,102,105,108,101,32,114,101,112,114,101,115,101,110, 116,101,100,32,98,121,32,116,104,101,32,104,97,110,100,108,101,46,32,66, 121,116,101,115,32,97,114,101,32,116,97,107,101,110,32,102,114,111,109,32, 109,101,109,111,114,121,44,32,115,116,97,114,116,105,110,103,32,97,116,32, 116,104,101,32,112,114,111,118,105,100,101,100,32,97,100,100,114,101,115,115, 46,0,87,114,105,116,101,32,97,32,99,104,97,114,97,99,116,101,114,32, 116,111,32,116,104,101,32,102,105,108,101,32,114,101,112,114,101,115,101,110, 116,101,100,32,98,121,32,116,104,101,32,104,97,110,100,108,101,46,32,73, 102,32,98,117,105,108,116,32,119,105,116,104,32,85,84,70,51,50,32,115, 117,112,112,111,114,116,44,32,116,104,105,115,32,119,105,108,108,32,116,114, 97,110,115,108,97,116,101,32,116,104,101,32,99,104,97,114,97,99,116,101, 114,32,98,97,99,107,32,116,111,32,97,32,85,84,70,56,32,115,101,113, 117,101,110,99,101,32,98,101,102,111,114,101,32,119,114,105,116,105,110,103, 46,0,70,105,108,108,32,109,101,109,111,114,121,32,115,116,97,114,116,105, 110,103,32,97,116,32,34,112,34,32,119,105,116,104,32,118,97,108,117,101, 32,34,118,34,46,32,70,105,108,108,115,32,34,110,34,32,99,101,108,108, 115,46,0,65,112,112,101,110,100,32,97,32,99,111,110,115,32,99,101,108, 108,32,116,111,32,97,32,108,105,115,116,46,0,67,114,101,97,116,101,32, 97,32,110,101,119,32,108,105,115,116,32,119,105,116,32,116,104,101,32,103, 105,118,101,110,32,118,97,108,117,101,32,97,115,32,116,104,101,32,99,97, 114,32,111,102,32,116,104,101,32,102,105,114,115,116,32,110,111,100,101,46, 0,82,101,109,111,118,101,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,99,111,110,115,32,102,114,111,109,32,97,32,108,105,115,116,46,0, 82,101,109,111,118,101,32,116,104,101,32,108,97,115,116,32,99,111,110,115, 32,102,114,111,109,32,97,32,108,105,115,116,46,0,82,117,110,32,97,32, 113,117,111,116,97,116,105,111,110,32,97,103,97,105,110,115,116,32,101,97, 99,104,32,118,97,108,117,101,32,105,110,32,97,32,108,105,115,116,46,0, 73,110,115,101,114,116,32,97,32,110,101,119,32,99,111,110,115,32,40,118, 41,32,105,110,116,111,32,116,104,101,32,108,105,115,116,32,40,112,41,44, 32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,105,110, 100,101,120,32,40,110,41,46,0,82,101,116,117,114,110,32,116,104,101,32, 108,101,110,103,116,104,32,111,102,32,97,32,108,105,115,116,46,0,68,105, 115,112,108,97,121,32,116,104,101,32,40,97,115,32,110,117,109,98,101,114, 115,41,32,118,97,108,117,101,115,32,105,110,32,97,32,108,105,115,116,46, 0,71,105,118,101,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32, 97,32,108,105,115,116,44,32,114,101,116,117,114,110,32,97,32,112,111,105, 110,116,101,114,32,116,111,32,116,104,101,32,108,97,115,116,32,99,111,110, 115,32,99,101,108,108,46,0,71,105,118,101,110,32,97,32,110,111,100,101, 32,110,117,109,98,101,114,44,32,114,101,116,117,114,110,32,97,32,112,111, 105,110,116,101,114,32,116,111,32,116,104,101,32,99,111,110,115,32,99,101, 108,108,32,105,110,32,116,104,101,32,108,105,115,116,46,0,84,114,105,103, 103,101,114,32,97,32,102,108,111,97,116,105,110,103,45,112,111,105,110,116, 32,111,112,101,114,97,116,105,111,110,46,32,84,104,105,115,32,105,115,32, 110,111,116,32,105,110,116,101,110,100,101,100,32,116,111,32,98,101,32,117, 115,101,100,32,100,105,114,101,99,116,108,121,46,0,82,117,110,32,113,117, 111,116,97,116,105,111,110,32,105,110,32,97,110,32,101,110,100,108,101,115, 115,32,108,111,111,112,46,0,83,97,118,101,32,118,97,108,117,101,32,111, 102,32,96,72,101,97,112,96,44,32,114,117,110,32,116,104,101,32,102,117, 110,99,116,105,111,110,32,112,114,111,118,105,100,101,100,44,32,116,104,101, 110,32,114,101,115,116,111,114,101,32,96,72,101,97,112,96,46,0,67,111, 109,112,97,114,101,32,110,49,32,97,110,100,32,110,50,46,32,82,101,116, 117,114,110,32,96,84,82,85,69,96,32,105,102,32,110,49,32,105,115,32, 103,114,101,97,116,101,114,32,116,104,97,110,32,110,50,44,32,111,114,32, 96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115,101,46,0,67, 111,109,112,97,114,101,32,110,49,32,97,110,100,32,110,50,46,32,82,101, 116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,110,49,32,105,115, 32,103,114,101,97,116,101,114,32,116,104,97,110,32,111,114,32,101,113,117, 97,108,32,116,111,32,110,50,44,32,111,114,32,96,70,65,76,83,69,96, 32,111,116,104,101,114,119,105,115,101,46,0,70,101,116,99,104,32,116,104, 101,32,49,54,45,98,105,116,32,118,97,108,117,101,32,115,116,111,114,101, 100,32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97, 100,100,114,101,115,115,46,32,65,100,100,114,101,115,115,105,110,103,32,102, 111,114,32,116,104,105,115,32,105,115,32,105,110,32,56,45,98,105,116,32, 117,110,105,116,115,46,0,70,101,116,99,104,32,116,104,101,32,118,97,108, 117,101,32,115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112,101, 99,105,102,105,101,100,32,97,100,100,114,101,115,115,46,32,82,101,116,117, 114,110,115,32,116,104,101,32,110,101,120,116,32,97,100,100,114,101,115,115, 32,97,110,100,32,116,104,101,32,118,97,108,117,101,46,0,83,116,111,114, 101,32,97,110,32,49,54,45,98,105,116,32,118,97,108,117,101,32,105,110, 116,111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100,100, 114,101,115,115,46,32,65,100,100,114,101,115,115,105,110,103,32,102,111,114, 32,116,104,105,115,32,105,115,32,105,110,32,56,45,98,105,116,32,117,110, 105,116,115,46,0,83,116,111,114,101,32,97,32,118,97,108,117,101,32,105, 110,116,111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100, 100,114,101,115,115,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, 32,110,101,120,116,32,97,100,100,114,101,115,115,46,0,82,101,116,117,114, 110,32,116,104,101,32,110,101,120,116,32,102,114,101,101,32,97,100,100,114, 101,115,115,32,105,110,32,109,101,109,111,114,121,46,0,83,101,116,32,96, 66,97,115,101,96,32,116,111,32,104,101,120,97,100,101,99,105,109,97,108, 46,0,65,100,100,32,97,32,104,111,111,107,32,112,111,105,110,116,32,105, 110,116,111,32,116,104,101,32,99,117,114,114,101,110,116,32,119,111,114,100, 46,32,84,104,105,115,32,115,104,111,117,108,100,32,111,110,108,121,32,98, 101,32,117,115,101,100,32,97,115,32,116,104,101,32,102,105,114,115,116,32, 119,111,114,100,32,105,110,32,97,32,100,101,102,105,110,105,116,105,111,110, 46,0,65,115,115,101,109,98,108,101,32,116,104,101,32,105,110,115,116,114, 117,99,116,105,111,110,115,32,115,112,101,99,105,102,105,101,100,32,98,121, 32,116,104,101,32,115,116,114,105,110,103,32,105,110,116,111,32,116,104,101, 32,99,117,114,114,101,110,116,32,97,115,115,101,109,98,108,121,32,115,99, 111,112,101,46,0,69,120,101,99,117,116,101,32,116,104,101,32,113,117,111, 116,101,32,105,102,32,116,104,101,32,102,108,97,103,32,105,115,32,96,84, 82,85,69,96,46,0,69,120,101,99,117,116,101,32,116,104,101,32,113,117, 111,116,97,116,105,111,110,32,105,102,32,116,104,101,32,102,108,97,103,32, 105,115,32,96,84,82,85,69,96,46,32,73,102,32,116,114,117,101,44,32, 97,108,115,111,32,101,120,105,116,32,116,104,101,32,119,111,114,100,46,0, 67,104,97,110,103,101,32,116,104,101,32,99,108,97,115,115,32,111,102,32, 116,104,101,32,109,111,115,116,32,114,101,99,101,110,116,108,121,32,100,101, 102,105,110,101,100,32,119,111,114,100,32,116,111,32,96,99,108,97,115,115, 58,109,97,99,114,111,96,46,0,82,117,110,32,116,104,101,32,99,111,100, 101,32,105,110,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,102, 105,108,101,46,32,0,82,117,110,32,97,32,113,117,111,116,101,32,116,104, 101,32,115,112,101,99,105,102,105,101,100,32,110,117,109,98,101,114,32,111, 102,32,116,105,109,101,115,44,32,116,114,97,99,107,105,110,103,32,116,104, 101,32,108,111,111,112,32,105,110,100,101,120,32,105,110,32,96,73,96,46, 32,84,104,105,115,32,105,115,32,108,101,115,115,32,101,102,102,105,99,105, 101,110,116,32,116,104,97,110,32,96,116,105,109,101,115,96,44,32,115,111, 32,105,102,32,116,104,101,32,105,110,100,101,120,32,105,115,32,110,111,116, 32,110,101,101,100,101,100,44,32,116,104,105,115,32,115,104,111,117,108,100, 32,98,101,32,97,118,111,105,100,101,100,46,0,86,101,99,116,111,114,101, 100,46,32,73,110,116,101,114,112,114,101,116,32,97,32,115,105,110,103,108, 101,32,105,110,112,117,116,32,116,111,107,101,110,46,0,84,114,105,103,103, 101,114,32,97,110,32,73,47,79,32,111,112,101,114,97,116,105,111,110,32, 105,110,118,111,108,118,105,110,103,32,109,117,108,116,105,99,111,114,101,32, 115,117,112,112,111,114,116,46,32,85,110,105,120,32,115,121,115,116,101,109, 32,99,97,108,108,46,0,82,101,116,117,114,110,32,116,104,101,32,110,117, 109,98,101,114,32,111,102,32,73,47,79,32,100,101,118,105,99,101,115,46, 0,73,110,118,111,107,101,32,97,110,32,105,110,116,101,114,97,99,116,105, 111,110,32,119,105,116,104,32,97,110,32,73,47,79,32,100,101,118,105,99, 101,46,0,65,115,107,32,97,110,32,73,47,79,32,100,101,118,105,99,101, 32,116,111,32,105,100,101,110,116,105,102,121,32,105,116,115,101,108,102,46, 32,82,101,116,117,114,110,115,32,97,32,118,101,114,115,105,111,110,32,40, 109,41,32,97,110,100,32,100,101,118,105,99,101,32,73,68,32,40,78,41, 46,0,83,99,97,110,32,116,104,101,32,73,47,79,32,100,101,118,105,99, 101,115,32,102,111,114,32,97,32,100,101,118,105,99,101,32,119,105,116,104, 32,97,32,115,112,101,99,105,102,105,101,100,32,73,68,46,32,82,101,116, 117,114,110,115,32,116,104,101,32,100,101,118,105,99,101,32,110,117,109,98, 101,114,44,32,111,114,32,45,49,32,105,102,32,110,111,116,32,102,111,117, 110,100,46,0,84,114,105,103,103,101,114,32,97,32,85,110,105,120,32,115, 121,115,116,101,109,32,99,97,108,108,46,32,84,104,105,115,32,105,115,32, 110,111,116,32,105,110,116,101,110,100,101,100,32,116,111,32,98,101,32,117, 115,101,100,32,100,105,114,101,99,116,108,121,46,0,68,97,116,97,46,32, 82,101,116,117,114,110,32,97,32,116,101,109,112,108,97,116,101,32,102,111, 114,32,97,32,108,105,98,114,97,114,121,32,102,105,108,101,32,110,97,109, 101,32,105,110,32,96,126,47,46,99,111,110,102,105,103,47,114,101,116,114, 111,102,111,114,116,104,47,108,105,98,114,97,114,121,96,46,0,70,105,110, 100,32,116,104,101,32,117,115,101,114,115,32,104,111,109,101,32,100,105,114, 101,99,116,111,114,121,32,97,110,100,32,99,111,110,115,116,114,117,99,116, 32,97,32,102,105,108,101,110,97,109,101,32,102,111,114,32,97,32,108,105, 98,114,97,114,121,32,105,110,32,116,104,101,32,96,126,47,46,99,111,110, 102,105,103,47,114,101,116,114,111,102,111,114,116,104,47,108,105,98,114,97, 114,121,96,32,100,105,114,101,99,116,111,114,121,46,0,68,97,116,97,46, 32,82,101,116,117,114,110,32,97,32,116,101,109,112,108,97,116,101,32,102, 111,114,32,97,32,108,105,98,114,97,114,121,32,102,105,108,101,32,110,97, 109,101,32,105,110,32,96,46,47,108,105,98,114,97,114,121,96,46,0,67, 104,101,99,107,32,116,111,32,115,101,101,32,105,102,32,97,32,108,105,98, 114,97,114,121,32,101,120,105,115,116,115,46,0,67,111,110,115,116,114,117, 99,116,32,97,32,102,105,108,101,110,97,109,101,32,102,111,114,32,97,32, 108,105,98,114,97,114,121,32,105,110,32,116,104,101,32,96,126,47,108,105, 98,114,97,114,121,96,32,100,105,114,101,99,116,111,114,121,46,0,71,105, 118,101,110,32,97,32,108,105,98,114,97,114,121,32,110,97,109,101,44,32, 99,111,110,115,116,114,117,99,116,32,116,104,101,32,97,99,116,117,97,108, 32,102,105,108,101,110,97,109,101,32,116,111,32,108,111,97,100,46,0,76, 111,97,100,32,97,32,108,105,98,114,97,114,121,46,32,84,104,105,115,32, 119,105,108,108,32,108,111,97,100,32,116,104,101,32,115,116,114,105,110,103, 44,32,119,105,116,104,32,34,46,114,101,116,114,111,34,46,0,34,82,117, 110,32,105,110,116,101,114,97,99,116,105,118,101,32,34,34,108,105,115,116, 101,110,101,114,34,34,32,40,97,32,82,69,80,76,41,46,34,0,67,111, 109,112,97,114,101,32,110,49,32,97,110,100,32,110,50,46,32,82,101,116, 117,114,110,32,96,84,82,85,69,96,32,105,102,32,110,49,32,105,115,32, 108,101,115,115,32,116,104,97,110,32,110,50,44,32,111,114,32,96,70,65, 76,83,69,96,32,111,116,104,101,114,119,105,115,101,46,0,67,111,109,112, 97,114,101,32,110,49,32,97,110,100,32,110,50,46,32,82,101,116,117,114, 110,32,96,84,82,85,69,96,32,105,102,32,110,49,32,105,115,32,108,101, 115,115,32,116,104,97,110,32,111,114,32,101,113,117,97,108,32,116,111,32, 110,50,44,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114, 119,105,115,101,46,0,68,105,118,105,100,101,32,96,110,96,32,98,121,32, 96,109,96,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,114, 101,109,97,105,110,100,101,114,46,0,82,101,116,117,114,110,32,96,84,82, 85,69,96,32,105,102,32,110,117,109,98,101,114,32,105,115,32,110,111,116, 32,122,101,114,111,44,32,111,114,32,96,70,65,76,83,69,96,32,111,116, 104,101,114,119,105,115,101,46,0,82,101,116,117,114,110,32,116,104,101,32, 109,97,120,105,109,117,109,32,118,97,108,117,101,32,116,104,97,116,32,119, 105,108,108,32,102,105,116,32,105,110,32,97,32,99,101,108,108,46,0,82, 101,116,117,114,110,32,116,104,101,32,109,105,110,105,109,117,109,32,118,97, 108,117,101,32,116,104,97,116,32,119,105,108,108,32,102,105,116,32,105,110, 32,97,32,99,101,108,108,46,0,82,101,116,117,114,110,32,116,104,101,32, 97,98,115,111,108,117,116,101,32,118,97,108,117,101,32,111,102,32,97,32, 110,117,109,98,101,114,46,0,82,101,116,117,114,110,32,84,82,85,69,32, 105,102,32,110,117,109,98,101,114,32,105,115,32,98,101,116,119,101,101,110, 32,116,104,101,32,108,111,119,101,114,32,40,108,41,32,97,110,100,32,117, 112,112,101,114,32,40,117,41,32,98,111,117,110,100,115,46,32,73,102,32, 110,111,116,44,32,114,101,116,117,114,110,32,70,65,76,83,69,46,32,84, 104,105,115,32,105,115,32,105,110,99,108,117,115,105,118,101,32,111,102,32, 116,104,101,32,108,105,109,105,116,115,46,0,68,101,99,114,101,109,101,110, 116,32,110,32,98,121,32,111,110,101,46,0,82,101,116,117,114,110,32,96, 84,82,85,69,96,32,105,102,32,110,117,109,98,101,114,32,105,115,32,101, 118,101,110,44,32,111,114,32,96,70,65,76,83,69,96,32,105,102,32,110, 111,116,46,0,73,110,99,114,101,109,101,110,116,32,110,32,98,121,32,111, 110,101,46,0,82,101,116,117,114,110,32,110,32,105,102,32,105,116,32,105, 115,32,119,105,116,104,105,110,32,116,104,101,32,108,111,119,101,114,32,40, 108,41,32,97,110,100,32,117,112,112,101,114,32,40,117,41,32,98,111,117, 110,100,115,46,32,73,102,32,111,117,116,115,105,100,101,32,116,104,101,32, 98,111,117,110,100,115,44,32,114,101,116,117,114,110,32,116,104,101,32,99, 108,111,115,101,115,32,98,111,117,110,100,97,114,121,32,118,97,108,117,101, 46,0,82,101,116,117,114,110,32,116,104,101,32,103,114,101,97,116,101,114, 32,111,102,32,116,119,111,32,118,97,108,117,101,115,46,0,82,101,116,117, 114,110,32,116,104,101,32,108,101,115,115,101,114,32,111,102,32,116,119,111, 32,118,97,108,117,101,115,46,0,73,110,118,101,114,116,32,116,104,101,32, 115,105,103,110,32,111,102,32,97,32,110,117,109,98,101,114,46,0,82,101, 116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,110,117,109,98,101, 114,32,105,115,32,110,101,103,97,116,105,118,101,44,32,111,114,32,96,70, 65,76,83,69,96,32,105,102,32,110,111,116,46,0,82,101,116,117,114,110, 32,96,84,82,85,69,96,32,105,102,32,110,117,109,98,101,114,32,105,115, 32,111,100,100,44,32,111,114,32,96,70,65,76,83,69,96,32,105,102,32, 110,111,116,46,0,82,101,116,117,114,110,32,96,84,82,85,69,96,32,105, 102,32,110,117,109,98,101,114,32,105,115,32,112,111,115,105,116,105,118,101, 44,32,111,114,32,96,70,65,76,83,69,96,32,105,102,32,110,111,116,46, 0,82,101,116,117,114,110,32,98,97,115,101,32,40,98,41,32,116,111,32, 112,111,119,101,114,32,40,112,41,46,0,68,105,115,112,108,97,121,32,97, 32,110,117,109,98,101,114,46,0,82,101,116,117,114,110,32,97,32,114,97, 110,100,111,109,32,110,117,109,98,101,114,46,0,82,101,116,117,114,110,32, 116,104,101,32,115,113,117,97,114,101,32,114,111,111,116,32,111,102,32,97, 32,110,117,109,98,101,114,46,0,82,101,116,117,114,110,32,116,104,101,32, 115,113,117,97,114,101,32,111,102,32,97,32,110,117,109,98,101,114,46,0, 82,101,116,117,114,110,32,84,82,85,69,32,105,102,32,110,117,109,98,101, 114,32,105,115,32,103,114,101,97,116,101,114,32,116,104,97,110,32,122,101, 114,111,32,111,114,32,70,65,76,83,69,32,105,102,32,105,116,32,105,115, 32,122,101,114,111,32,111,114,32,108,101,115,115,46,0,67,111,110,118,101, 114,116,32,97,32,110,117,109,98,101,114,32,105,110,116,111,32,97,32,102, 108,111,97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,46, 0,67,111,110,118,101,114,116,32,97,32,110,117,109,98,101,114,32,105,110, 116,111,32,97,32,115,116,114,105,110,103,46,0,82,101,116,117,114,110,32, 96,84,82,85,69,96,32,105,102,32,110,117,109,98,101,114,32,105,115,32, 122,101,114,111,44,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104, 101,114,119,105,115,101,46,0,82,101,109,111,118,101,32,116,104,101,32,115, 101,99,111,110,100,32,105,116,101,109,32,102,114,111,109,32,116,104,101,32, 115,116,97,99,107,46,0,68,105,115,112,108,97,121,32,97,32,110,101,119, 108,105,110,101,46,0,80,101,114,102,111,114,109,32,97,32,108,111,103,105, 99,97,108,32,78,79,84,32,111,112,101,114,97,116,105,111,110,46,0,83, 101,116,32,96,66,97,115,101,96,32,116,111,32,111,99,116,97,108,46,0, 80,101,114,102,111,114,109,32,97,32,98,105,116,119,105,115,101,32,79,82, 32,98,101,116,119,101,101,110,32,116,104,101,32,112,114,111,118,105,100,101, 100,32,118,97,108,117,101,115,46,0,80,117,116,32,97,32,99,111,112,121, 32,111,102,32,110,32,111,118,101,114,32,109,46,0,80,97,99,107,32,102, 111,117,114,32,56,45,98,105,116,32,118,97,108,117,101,115,32,105,110,116, 111,32,97,32,51,50,45,98,105,116,32,118,97,108,117,101,46,0,77,111, 118,101,32,97,32,118,97,108,117,101,32,102,114,111,109,32,116,104,101,32, 114,101,116,117,114,110,32,115,116,97,99,107,32,116,111,32,116,104,101,32, 100,97,116,97,32,115,116,97,99,107,46,0,67,104,97,110,103,101,32,116, 104,101,32,99,108,97,115,115,32,111,102,32,116,104,101,32,109,111,115,116, 32,114,101,99,101,110,116,108,121,32,100,101,102,105,110,101,100,32,119,111, 114,100,32,116,111,32,96,99,108,97,115,115,58,112,114,105,109,105,116,105, 118,101,96,46,0,77,111,118,101,32,97,32,118,97,108,117,101,32,102,114, 111,109,32,116,104,101,32,100,97,116,97,32,115,116,97,99,107,32,116,111, 32,116,104,101,32,114,101,116,117,114,110,32,115,116,97,99,107,46,0,76, 111,111,107,117,112,32,97,32,114,101,102,101,114,101,110,99,101,32,98,121, 32,110,97,109,101,32,97,110,100,32,105,110,108,105,110,101,32,105,116,115, 32,112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,99,117,114,114, 101,110,116,32,97,115,115,101,109,98,108,121,32,115,101,103,109,101,110,116, 46,0,67,104,97,110,103,101,32,116,104,101,32,99,108,97,115,115,32,104, 97,110,100,108,101,114,32,111,102,32,116,104,101,32,109,111,115,116,32,114, 101,99,101,110,116,108,121,32,100,101,102,105,110,101,100,32,119,111,114,100, 32,116,111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,111,110, 101,46,0,82,101,115,116,114,117,99,116,117,114,101,32,116,104,101,32,111, 114,100,101,114,32,111,102,32,105,116,101,109,115,32,111,110,32,116,104,101, 32,115,116,97,99,107,46,0,66,101,103,105,110,32,97,110,32,117,110,99, 111,110,100,105,116,105,111,110,97,108,32,108,111,111,112,46,0,82,101,109, 111,118,101,32,97,108,108,32,105,116,101,109,115,32,102,114,111,109,32,116, 104,101,32,115,116,97,99,107,46,0,82,111,116,97,116,101,32,116,104,101, 32,116,111,112,32,116,104,114,101,101,32,118,97,108,117,101,115,46,0,67, 111,109,112,105,108,101,32,116,104,101,32,99,111,100,101,32,110,101,101,100, 101,100,32,116,111,32,112,117,115,104,32,97,32,115,116,114,105,110,103,32, 112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,115,116,97,99,107, 32,97,110,100,32,105,110,108,105,110,101,32,116,104,101,32,115,116,114,105, 110,103,32,100,97,116,97,32,105,110,116,111,32,116,104,101,32,99,117,114, 114,101,110,116,32,100,101,102,105,110,105,116,105,111,110,46,0,67,111,110, 115,116,97,110,116,46,32,82,101,116,117,114,110,115,32,97,32,115,116,114, 105,110,103,32,111,102,32,116,104,101,32,65,83,67,73,73,32,108,101,116, 116,101,114,115,32,40,117,112,112,101,114,32,97,110,100,32,108,111,119,101, 114,32,99,97,115,101,41,0,67,111,110,115,116,97,110,116,46,32,82,101, 116,117,114,110,115,32,97,32,115,116,114,105,110,103,32,111,102,32,116,104, 101,32,65,83,67,73,73,32,108,101,116,116,101,114,115,32,105,110,32,108, 111,119,101,114,99,97,115,101,0,67,111,110,115,116,97,110,116,46,32,82, 101,116,117,114,110,115,32,97,32,115,116,114,105,110,103,32,111,102,32,116, 104,101,32,65,83,67,73,73,32,108,101,116,116,101,114,115,32,105,110,32, 117,112,112,101,114,99,97,115,101,0,67,111,110,115,116,97,110,116,46,32, 82,101,116,117,114,110,32,97,32,115,116,114,105,110,103,32,111,102,32,99, 104,97,114,97,99,116,101,114,115,32,114,101,99,111,103,110,105,122,101,100, 32,97,115,32,110,117,109,101,114,105,99,32,100,105,103,105,116,115,46,0, 67,111,110,115,116,97,110,116,46,32,82,101,116,117,114,110,32,97,32,115, 116,114,105,110,103,32,111,102,32,99,104,97,114,97,99,116,101,114,115,32, 114,101,99,111,103,110,105,122,101,100,32,97,115,32,112,117,110,99,116,117, 97,116,105,111,110,46,0,67,111,110,115,116,97,110,116,46,32,82,101,116, 117,114,110,115,32,97,32,115,116,114,105,110,103,32,111,102,32,99,104,97, 114,97,99,116,101,114,115,32,114,101,99,111,103,110,105,122,101,100,32,97, 115,32,119,104,105,116,101,115,112,97,99,101,46,0,82,101,116,117,114,110, 32,97,32,110,101,119,32,115,116,114,105,110,103,32,99,111,110,115,105,115, 116,105,110,103,32,111,102,32,115,49,32,102,111,108,108,111,119,101,100,32, 98,121,32,115,50,46,0,82,101,116,117,114,110,32,96,84,82,85,69,96, 32,105,102,32,115,49,32,98,101,103,105,110,115,32,119,105,116,104,32,115, 50,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105, 115,101,46,0,73,102,32,116,104,101,32,96,115,96,32,109,97,116,99,104, 101,115,32,96,83,96,44,32,100,105,115,99,97,114,100,32,96,115,96,32, 97,110,100,32,114,117,110,32,116,104,101,32,113,117,111,116,101,32,98,101, 102,111,114,101,32,101,120,105,116,105,110,103,32,116,104,101,32,99,97,108, 108,101,114,46,32,73,102,32,116,104,101,121,32,100,111,32,110,111,116,32, 109,97,116,99,104,44,32,100,105,115,99,97,114,100,32,116,104,101,32,113, 117,111,116,101,32,97,110,100,32,108,101,97,118,101,32,96,115,96,32,111, 110,32,116,104,101,32,115,116,97,99,107,46,0,82,101,109,111,118,101,32, 116,104,101,32,108,97,115,116,32,99,104,97,114,97,99,116,101,114,32,102, 114,111,109,32,97,32,115,116,114,105,110,103,46,32,82,101,116,117,114,110, 115,32,97,32,110,101,119,32,115,116,114,105,110,103,46,0,67,114,101,97, 116,101,32,97,32,99,111,110,115,116,97,110,116,32,110,97,109,101,100,32, 115,50,44,32,114,101,116,117,114,110,105,110,103,32,97,32,112,111,105,110, 116,101,114,32,116,111,32,115,49,46,32,84,104,105,115,32,119,105,108,108, 32,117,115,101,32,96,115,58,107,101,101,112,96,32,116,111,32,112,114,101, 115,101,114,118,101,32,116,104,101,32,111,114,105,103,105,110,97,108,32,115, 116,114,105,110,103,46,0,82,101,116,117,114,110,32,96,84,82,85,69,96, 32,105,102,32,116,104,101,32,99,104,97,114,97,99,116,101,114,32,105,115, 32,112,114,101,115,101,110,116,32,105,110,32,116,104,101,32,115,116,114,105, 110,103,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119, 105,115,101,46,0,82,101,116,117,114,110,32,96,84,82,85,69,96,32,105, 102,32,116,104,101,32,115,101,99,111,110,100,32,115,116,114,105,110,103,32, 105,115,32,112,114,101,115,101,110,116,32,105,110,32,116,104,101,32,102,105, 114,115,116,32,115,116,114,105,110,103,32,111,114,32,96,70,65,76,83,69, 96,32,111,116,104,101,114,119,105,115,101,46,0,67,111,112,121,32,97,32, 115,116,114,105,110,103,32,40,115,41,32,116,111,32,97,32,100,101,115,116, 105,110,97,116,105,111,110,32,40,97,41,46,32,84,104,105,115,32,119,105, 108,108,32,105,110,99,108,117,100,101,32,116,104,101,32,116,101,114,109,105, 110,97,116,111,114,32,99,104,97,114,97,99,116,101,114,32,119,104,101,110, 32,99,111,112,121,105,110,103,46,0,82,101,116,117,114,110,32,97,32,100, 101,100,117,112,108,105,99,97,116,101,100,32,118,101,114,115,105,111,110,32, 111,102,32,116,104,101,32,115,116,114,105,110,103,46,0,86,97,114,105,97, 98,108,101,46,32,72,111,108,100,115,32,97,32,112,111,105,110,116,101,114, 32,116,111,32,116,104,101,32,100,101,100,117,112,108,105,99,97,116,105,111, 110,32,108,105,115,116,46,0,67,104,101,99,107,32,116,111,32,115,101,101, 32,105,102,32,97,32,115,116,114,105,110,103,32,105,115,32,105,110,32,116, 104,101,32,100,101,100,117,112,108,105,99,97,116,105,111,110,32,108,105,115, 116,46,0,82,101,116,117,114,110,32,97,32,112,111,105,110,116,101,114,32, 116,111,32,97,32,100,101,100,117,112,108,105,99,97,116,101,100,32,99,111, 112,121,32,111,102,32,97,32,115,116,114,105,110,103,46,32,73,102,32,116, 104,101,32,115,116,114,105,110,103,32,105,115,32,110,111,116,32,105,110,32, 116,104,101,32,100,101,100,117,112,108,105,99,97,116,105,111,110,32,108,105, 115,116,44,32,116,104,105,115,32,119,105,108,108,32,99,97,117,115,101,32, 101,114,114,111,114,115,46,0,65,100,100,32,97,32,115,116,114,105,110,103, 32,116,111,32,116,104,101,32,100,101,100,117,112,108,105,99,97,116,105,111, 110,32,108,105,115,116,46,0,82,101,116,117,114,110,32,97,110,32,101,109, 112,116,121,32,115,116,114,105,110,103,46,0,82,101,116,117,114,110,32,96, 84,82,85,69,96,32,105,102,32,115,49,32,101,110,100,115,32,119,105,116, 104,32,115,50,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101, 114,119,105,115,101,46,0,67,111,109,112,97,114,101,32,116,119,111,32,115, 116,114,105,110,103,115,32,102,111,114,32,101,113,117,97,108,105,116,121,46, 32,82,101,116,117,114,110,32,96,84,82,85,69,96,32,105,102,32,105,100, 101,110,116,105,99,97,108,32,111,114,32,96,70,65,76,83,69,96,32,105, 102,32,110,111,116,46,0,69,118,97,108,117,97,116,101,32,115,116,114,105, 110,103,32,97,115,32,105,102,32,105,116,32,119,97,115,32,116,121,112,101, 100,32,105,110,116,111,32,116,104,101,32,105,110,116,101,114,112,114,101,116, 101,114,46,0,70,101,116,99,104,32,116,104,101,32,99,104,97,114,97,99, 116,101,114,32,118,97,108,117,101,32,115,116,111,114,101,100,32,97,116,32, 116,104,101,32,115,112,101,99,105,102,105,101,100,32,105,110,100,101,120,32, 105,110,32,116,104,101,32,115,116,114,105,110,103,46,0,69,120,101,99,117, 116,101,32,116,104,101,32,113,117,111,116,101,32,111,110,99,101,32,102,111, 114,32,101,97,99,104,32,118,97,108,117,101,32,105,110,32,116,104,101,32, 115,116,114,105,110,103,46,32,73,102,32,116,104,101,32,113,117,111,116,101, 32,114,101,116,117,114,110,115,32,96,84,82,85,69,96,44,32,97,112,112, 101,110,100,32,116,104,101,32,118,97,108,117,101,32,105,110,116,111,32,97, 32,110,101,119,32,115,116,114,105,110,103,46,32,73,102,32,96,70,65,76, 83,69,96,32,116,104,101,32,118,97,108,117,101,32,119,105,108,108,32,98, 101,32,100,105,115,99,97,114,100,101,100,46,0,69,120,101,99,117,116,101, 32,116,104,101,32,113,117,111,116,101,32,111,110,99,101,32,102,111,114,32, 101,97,99,104,32,118,97,108,117,101,32,105,110,32,116,104,101,32,115,116, 114,105,110,103,46,0,67,111,110,115,116,114,117,99,116,32,97,32,110,101, 119,32,115,116,114,105,110,103,32,117,115,105,110,103,32,116,104,101,32,116, 101,109,112,108,97,116,101,32,112,97,115,115,101,100,32,97,110,100,32,105, 116,101,109,115,32,102,114,111,109,32,116,104,101,32,115,116,97,99,107,46, 0,82,101,97,100,32,105,110,112,117,116,32,102,114,111,109,32,115,116,97, 110,100,97,114,100,32,105,110,32,40,118,105,97,32,96,99,58,103,101,116, 96,41,32,117,110,116,105,108,32,97,32,119,104,105,116,101,115,112,97,99, 101,32,105,115,32,101,110,99,111,117,110,116,101,114,101,100,46,32,82,101, 116,117,114,110,115,32,97,32,115,116,114,105,110,103,46,0,67,97,108,99, 117,108,97,116,101,32,97,32,104,97,115,104,32,118,97,108,117,101,32,102, 111,114,32,97,32,115,116,114,105,110,103,46,32,84,104,105,115,32,117,115, 101,115,32,116,104,101,32,100,106,98,50,32,97,108,103,111,114,105,116,104, 109,46,0,82,101,116,117,114,110,32,116,104,101,32,108,111,99,97,116,105, 111,110,32,111,102,32,116,104,101,32,102,105,114,115,116,32,105,110,115,116, 97,110,99,101,32,111,102,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,99,104,97,114,97,99,116,101,114,32,105,110,32,116,104,101,32,115, 116,114,105,110,103,46,0,82,101,116,117,114,110,32,116,104,101,32,108,111, 99,97,116,105,111,110,32,111,102,32,116,104,101,32,102,105,114,115,116,32, 105,110,115,116,97,110,99,101,32,111,102,32,116,104,101,32,115,112,101,99, 105,102,105,101,100,32,115,117,98,115,116,114,105,110,103,32,40,115,50,41, 32,105,110,32,116,104,101,32,115,116,114,105,110,103,32,40,115,49,41,46, 32,82,101,116,117,114,110,115,32,45,49,32,105,102,32,110,111,116,32,102, 111,117,110,100,46,0,83,116,111,114,101,32,97,32,115,116,114,105,110,103, 32,105,110,116,111,32,116,104,101,32,104,101,97,112,32,97,110,100,32,114, 101,116,117,114,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,116, 104,101,32,115,116,97,114,116,32,111,102,32,105,116,46,0,82,101,116,117, 114,110,32,97,32,110,101,119,32,115,116,114,105,110,103,32,99,111,110,116, 97,105,110,105,110,103,32,116,104,101,32,102,105,114,115,116,32,96,110,96, 32,99,104,97,114,97,99,116,101,114,115,32,102,114,111,109,32,116,104,101, 32,115,111,117,114,99,101,32,115,116,114,105,110,103,46,0,82,101,116,117, 114,110,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,104,97, 114,97,99,116,101,114,115,32,105,110,32,97,32,115,116,114,105,110,103,44, 32,101,120,99,108,117,100,105,110,103,32,116,104,101,32,78,85,76,76,32, 116,101,114,109,105,110,97,116,111,114,46,0,69,120,101,99,117,116,101,32, 116,104,101,32,115,112,101,99,105,102,105,101,100,32,113,117,111,116,101,32, 111,110,99,101,32,102,111,114,32,101,97,99,104,32,99,104,97,114,97,99, 116,101,114,32,105,110,32,116,104,101,32,115,116,114,105,110,103,46,32,66, 117,105,108,100,115,32,97,32,110,101,119,32,115,116,114,105,110,103,32,102, 114,111,109,32,116,104,101,32,114,101,116,117,114,110,32,118,97,108,117,101, 32,111,102,32,116,104,101,32,113,117,111,116,101,46,32,84,104,101,32,113, 117,111,116,101,32,115,104,111,117,108,100,32,114,101,116,117,114,110,32,111, 110,108,121,32,111,110,101,32,118,97,108,117,101,46,0,82,101,116,117,114, 110,32,97,32,110,101,119,32,115,116,114,105,110,103,32,99,111,110,115,105, 115,116,105,110,103,32,111,102,32,115,50,32,102,111,108,108,111,119,101,100, 32,98,121,32,115,49,46,0,68,105,115,112,108,97,121,32,97,32,115,116, 114,105,110,103,46,0,82,101,112,108,97,99,101,32,116,104,101,32,102,105, 114,115,116,32,105,110,115,116,97,110,99,101,32,111,102,32,115,50,32,105, 110,32,115,49,32,119,105,116,104,32,115,51,46,0,82,101,112,108,97,99, 101,32,97,108,108,32,105,110,115,116,97,110,99,101,115,32,111,102,32,115, 50,32,105,110,32,115,49,32,119,105,116,104,32,115,51,46,0,82,101,118, 101,114,115,101,32,116,104,101,32,111,114,100,101,114,32,111,102,32,65,83, 67,73,73,32,99,104,97,114,97,99,116,101,114,115,32,105,110,32,97,32, 115,116,114,105,110,103,46,0,82,101,116,117,114,110,32,97,32,110,101,119, 32,115,116,114,105,110,103,32,99,111,110,116,97,105,110,105,110,103,32,116, 104,101,32,115,112,101,99,105,102,105,101,100,32,110,117,109,98,101,114,32, 111,102,32,99,104,97,114,97,99,116,101,114,115,32,102,114,111,109,32,116, 104,101,32,114,105,103,104,116,32,115,105,100,101,32,111,102,32,116,104,101, 32,115,116,114,105,110,103,46,0,73,110,116,101,114,110,97,108,32,104,101, 108,112,101,114,32,102,117,110,99,116,105,111,110,32,117,115,101,100,32,116, 111,32,115,107,105,112,32,111,118,101,114,32,97,32,115,116,114,105,110,103, 32,105,110,32,97,32,100,101,102,105,110,105,116,105,111,110,46,0,83,112, 108,105,116,32,97,32,115,116,114,105,110,103,32,111,110,32,116,104,101,32, 102,105,114,115,116,32,111,99,99,117,114,114,101,110,99,101,32,111,102,32, 116,104,101,32,115,112,101,99,105,102,105,101,100,32,99,104,97,114,97,99, 116,101,114,46,0,83,112,108,105,116,32,97,32,115,116,114,105,110,103,32, 111,110,32,116,104,101,32,102,105,114,115,116,32,111,99,99,117,114,114,101, 110,99,101,32,111,102,32,116,104,101,32,115,112,101,99,105,102,105,101,100, 32,115,116,114,105,110,103,46,32,65,102,116,101,114,32,116,104,101,32,115, 112,108,105,116,44,32,116,104,101,32,116,111,112,32,115,116,97,99,107,32, 105,116,101,109,32,119,105,108,108,32,98,101,32,116,104,101,32,112,97,114, 116,32,111,102,32,116,104,101,32,115,116,114,105,110,103,32,98,101,102,111, 114,101,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,115,117,98, 115,116,114,105,110,103,44,32,97,110,100,32,116,104,101,32,115,101,99,111, 110,100,32,105,116,101,109,32,119,105,108,108,32,98,101,32,116,104,101,32, 114,101,115,116,32,111,102,32,116,104,101,32,111,114,105,103,105,110,97,108, 32,115,116,114,105,110,103,46,0,83,116,111,114,101,32,97,32,99,104,97, 114,97,99,116,101,114,32,118,97,108,117,101,32,105,110,116,111,32,116,104, 101,32,115,116,114,105,110,103,32,97,116,32,116,104,101,32,115,112,101,99, 105,102,105,101,100,32,105,110,100,101,120,46,0,69,120,116,114,97,99,116, 32,97,32,115,117,98,115,116,114,105,110,103,32,102,114,111,109,32,116,104, 101,32,115,112,101,99,105,102,105,101,100,32,115,116,114,105,110,103,46,32, 84,104,105,115,32,119,105,108,108,32,116,97,107,101,32,116,104,101,32,99, 104,97,114,97,99,116,101,114,115,32,115,116,97,114,116,105,110,103,32,97, 116,32,96,102,96,32,97,110,100,32,101,120,116,101,110,100,32,96,108,96, 32,99,104,97,114,97,99,116,101,114,115,32,105,110,32,108,101,110,103,116, 104,46,0,77,111,118,101,32,97,32,115,116,114,105,110,103,32,105,110,116, 111,32,116,104,101,32,116,101,109,112,111,114,97,114,121,32,115,116,114,105, 110,103,32,98,117,102,102,101,114,115,46,0,67,111,110,118,101,114,116,32, 97,32,115,116,114,105,110,103,32,114,101,112,114,101,115,101,110,116,97,116, 105,111,110,32,105,110,116,111,32,97,32,102,108,111,97,116,105,110,103,45, 112,111,105,110,116,32,118,97,108,117,101,46,0,67,111,110,118,101,114,116, 32,117,112,112,101,114,99,97,115,101,32,65,83,67,73,73,32,99,104,97, 114,97,99,116,101,114,115,32,105,110,32,97,32,115,116,114,105,110,103,32, 116,111,32,108,111,119,101,114,99,97,115,101,46,0,67,111,110,118,101,114, 116,32,97,32,115,116,114,105,110,103,32,116,111,32,97,32,110,117,109,98, 101,114,46,0,67,111,110,118,101,114,116,32,108,111,119,101,114,99,97,115, 101,32,65,83,67,73,73,32,99,104,97,114,97,99,116,101,114,115,32,105, 110,32,97,32,115,116,114,105,110,103,32,116,111,32,117,112,112,101,114,99, 97,115,101,46,0,84,97,107,101,115,32,97,32,115,116,114,105,110,103,32, 97,110,100,32,97,32,99,104,97,114,97,99,116,101,114,32,116,111,32,117, 115,101,32,97,115,32,97,32,115,101,112,97,114,97,116,111,114,46,32,73, 116,32,115,112,108,105,116,115,32,116,104,101,32,115,116,114,105,110,103,32, 105,110,116,111,32,115,117,98,115,116,114,105,110,103,115,32,97,110,100,32, 114,101,116,117,114,110,115,32,97,110,32,97,114,114,97,121,32,99,111,110, 116,97,105,110,105,110,103,32,112,111,105,110,116,101,114,115,32,116,111,32, 101,97,99,104,32,111,102,32,116,104,101,109,46,0,84,97,107,101,115,32, 97,32,115,116,114,105,110,103,32,40,115,49,41,32,97,110,100,32,97,32, 115,117,98,115,116,114,105,110,103,32,40,115,50,41,32,32,117,115,101,32, 97,115,32,97,32,115,101,112,97,114,97,116,111,114,46,32,73,116,32,115, 112,108,105,116,115,32,116,104,101,32,115,116,114,105,110,103,32,105,110,116, 111,32,115,117,98,115,116,114,105,110,103,115,32,97,110,100,32,114,101,116, 117,114,110,115,32,97,115,32,97,114,114,97,121,32,99,111,110,116,97,105, 110,105,110,103,32,112,111,105,110,116,101,114,115,32,116,111,32,101,97,99, 104,32,111,102,32,116,104,101,109,46,0,84,114,105,109,32,108,101,97,100, 105,110,103,32,97,110,100,32,116,114,97,105,108,105,110,103,32,119,104,105, 116,101,115,112,97,99,101,32,102,114,111,109,32,97,32,115,116,114,105,110, 103,46,0,84,114,105,109,32,108,101,97,100,105,110,103,32,119,104,105,116, 101,115,112,97,99,101,32,102,114,111,109,32,97,32,115,116,114,105,110,103, 46,0,84,114,105,109,32,116,114,97,105,108,105,110,103,32,119,104,105,116, 101,115,112,97,99,101,32,102,114,111,109,32,97,32,115,116,114,105,110,103, 46,0,65,108,105,97,115,32,102,111,114,32,96,115,58,100,101,100,117,112, 46,100,101,102,105,110,101,100,63,96,46,0,68,105,115,99,97,114,100,32, 114,101,109,97,105,110,105,110,103,32,116,111,107,101,110,115,32,111,110,32, 116,104,101,32,99,117,114,114,101,110,116,32,108,105,110,101,32,98,101,105, 110,103,32,101,118,97,108,117,97,116,101,100,46,32,84,104,105,115,32,111, 110,108,121,32,119,111,114,107,115,32,119,104,101,110,32,105,110,99,108,117, 100,105,110,103,32,97,32,102,105,108,101,44,32,110,111,116,32,97,116,32, 116,104,101,32,105,110,116,101,114,112,114,101,116,101,114,46,0,82,101,116, 117,114,110,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,97,114, 103,117,109,101,110,116,115,32,112,97,115,115,101,100,32,116,111,32,116,104, 101,32,112,114,111,103,114,97,109,46,0,82,101,116,117,114,110,32,116,104, 101,32,102,105,108,101,110,97,109,101,32,111,102,32,116,104,101,32,102,105, 108,101,32,98,101,105,110,103,32,112,114,111,99,101,115,115,101,100,32,98, 121,32,116,104,101,32,99,117,114,114,101,110,116,32,96,105,110,99,108,117, 100,101,96,44,32,111,114,32,96,47,100,101,118,47,115,116,100,105,110,96, 32,105,102,32,116,104,101,32,105,110,112,117,116,32,115,111,117,114,99,101, 32,105,115,32,116,104,101,32,116,101,114,109,105,110,97,108,46,0,82,101, 116,117,114,110,32,116,104,101,32,99,117,114,114,101,110,116,32,108,105,110, 101,32,110,117,109,98,101,114,32,111,102,32,116,104,101,32,102,105,108,101, 32,98,101,105,110,103,32,112,114,111,99,101,115,115,101,100,32,98,121,32, 116,104,101,32,99,117,114,114,101,110,116,32,96,105,110,99,108,117,100,101, 96,44,32,111,114,32,96,48,96,32,105,102,32,116,104,101,32,105,110,112, 117,116,32,115,111,117,114,99,101,32,105,115,32,116,104,101,32,116,101,114, 109,105,110,97,108,46,32,76,105,110,101,32,110,117,109,98,101,114,105,110, 103,32,115,116,97,114,116,115,32,97,116,32,49,46,0,82,101,116,117,114, 110,32,116,104,101,32,116,101,120,116,32,111,102,32,116,104,101,32,99,117, 114,114,101,110,116,32,108,105,110,101,32,98,101,105,110,103,32,112,114,111, 99,101,115,115,101,100,32,98,121,32,116,104,101,32,99,117,114,114,101,110, 116,32,96,105,110,99,108,117,100,101,96,46,0,71,105,118,101,110,32,97, 110,32,97,114,103,117,109,101,110,116,32,110,117,109,98,101,114,44,32,114, 101,116,117,114,110,32,116,104,101,32,97,114,103,117,109,101,110,116,32,97, 115,32,97,32,115,116,114,105,110,103,46,0,68,105,115,99,97,114,100,32, 114,101,109,97,105,110,105,110,103,32,116,111,107,101,110,115,32,105,110,32, 116,104,101,32,99,117,114,114,101,110,116,32,108,105,110,101,46,32,84,104, 105,115,32,111,110,108,121,32,119,111,114,107,115,32,119,104,101,110,32,105, 110,99,108,117,100,105,110,103,32,97,32,102,105,108,101,44,32,110,111,116, 32,97,116,32,116,104,101,32,105,110,116,101,114,112,114,101,116,101,114,46, 0,82,101,116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109,101, 32,111,102,32,116,104,101,32,112,114,111,103,114,97,109,32,98,101,105,110, 103,32,114,117,110,46,0,80,97,116,99,104,32,116,104,101,32,104,111,111, 107,32,112,111,105,110,116,32,105,110,32,97,50,32,116,111,32,112,111,105, 110,116,32,116,111,32,97,49,46,0,80,101,102,111,114,109,32,97,32,98, 105,116,119,105,115,101,32,115,104,105,102,116,32,111,102,32,109,32,98,121, 32,110,32,98,105,116,115,46,32,73,102,32,110,32,105,115,32,112,111,115, 105,116,105,118,101,44,32,115,104,105,102,116,32,114,105,103,104,116,46,32, 73,102,32,110,101,103,97,116,105,118,101,44,32,116,104,101,32,115,104,105, 102,116,32,119,105,108,108,32,98,101,32,116,111,32,116,104,101,32,108,101, 102,116,46,0,83,116,111,114,101,32,97,32,118,97,108,117,101,32,105,110, 116,111,32,97,32,118,97,114,105,97,98,108,101,46,0,80,114,111,99,101, 115,115,32,116,111,107,101,110,32,97,115,32,97,32,110,117,109,98,101,114, 46,0,80,114,111,99,101,115,115,32,116,111,107,101,110,32,97,115,32,97, 110,32,65,83,67,73,73,32,99,104,97,114,97,99,116,101,114,46,0,82, 101,116,117,114,110,32,97,32,112,111,105,110,116,101,114,32,116,111,32,97, 32,110,97,109,101,100,32,105,116,101,109,46,32,73,102,32,110,97,109,101, 32,105,115,32,110,111,116,32,102,111,117,110,100,44,32,114,101,116,117,114, 110,115,32,48,46,0,80,114,111,99,101,115,115,32,116,111,107,101,110,32, 97,115,32,97,32,115,116,114,105,110,103,46,0,80,114,111,99,101,115,115, 32,116,111,107,101,110,32,97,115,32,97,32,99,111,109,109,101,110,116,46, 0,73,110,116,101,114,112,114,101,116,32,116,105,109,101,58,32,99,111,110, 118,101,114,116,32,115,116,114,105,110,103,32,116,111,32,97,32,102,108,111, 97,116,105,110,103,45,112,111,105,110,116,32,118,97,108,117,101,46,32,67, 111,109,112,105,108,101,32,116,105,109,101,58,32,99,111,110,118,101,114,116, 32,115,116,114,105,110,103,32,116,111,32,97,32,102,108,111,97,116,105,110, 103,45,112,111,105,110,116,32,118,97,108,117,101,32,97,110,100,32,99,111, 109,112,105,108,101,32,99,111,100,101,32,116,111,32,112,117,115,104,32,116, 104,105,115,32,118,97,108,117,101,32,116,111,32,116,104,101,32,102,108,111, 97,116,32,115,116,97,99,107,46,0,72,111,111,107,46,32,80,114,111,99, 101,115,115,32,116,111,107,101,110,32,97,115,32,97,32,110,101,119,32,100, 101,102,105,110,105,116,105,111,110,46,0,70,101,116,99,104,32,102,114,111, 109,32,97,32,115,116,111,114,101,100,32,118,97,114,105,97,98,108,101,46, 0,80,114,111,99,101,115,115,32,116,111,107,101,110,32,97,115,32,97,110, 32,105,110,115,116,114,117,99,116,105,111,110,32,98,117,110,100,108,101,46, 0,80,114,111,99,101,115,115,32,116,111,107,101,110,32,97,115,32,97,32, 102,117,110,99,116,105,111,110,32,114,101,102,101,114,101,110,99,101,46,0, 80,114,111,99,101,115,115,32,116,111,107,101,110,32,97,115,32,97,32,98, 121,116,101,99,111,100,101,46,0,80,79,83,84,80,79,78,69,32,101,113, 117,105,118,97,108,101,110,116,46,0,82,117,110,32,113,117,111,116,101,46, 32,65,102,116,101,114,32,101,120,101,99,117,116,105,111,110,32,99,111,109, 112,108,101,116,101,115,44,32,112,117,116,32,97,32,99,111,112,121,32,111, 102,32,110,32,98,97,99,107,32,111,110,32,116,111,112,32,111,102,32,116, 104,101,32,115,116,97,99,107,46,0,66,101,103,105,110,32,97,99,99,101, 112,116,105,110,103,32,99,111,110,110,101,99,116,105,111,110,115,46,32,82, 101,116,117,114,110,115,32,97,32,110,101,119,32,115,111,99,107,101,116,32, 97,110,100,32,97,110,32,101,114,114,111,114,32,99,111,100,101,46,0,66, 105,110,100,32,97,32,115,111,99,107,101,116,32,116,111,32,97,32,112,111, 114,116,46,32,84,104,101,32,112,111,114,116,32,115,104,111,117,108,100,32, 98,101,32,97,32,115,116,114,105,110,103,46,32,82,101,116,117,114,110,115, 32,48,32,105,102,32,115,117,99,99,101,115,115,102,117,108,32,111,114,32, 45,49,32,111,116,104,101,114,119,105,115,101,32,97,110,100,32,97,110,32, 101,114,114,111,114,32,99,111,100,101,46,0,67,108,111,115,101,32,97,32, 115,111,99,107,101,116,46,0,67,111,110,102,105,103,117,114,101,32,105,110, 116,101,114,110,97,108,32,115,101,116,116,105,110,103,115,32,102,111,114,32, 97,32,104,111,115,116,32,40,115,49,41,32,97,110,100,32,112,111,114,116, 32,40,115,50,41,46,32,85,115,101,32,98,101,102,111,114,101,32,96,115, 111,99,107,101,116,58,98,105,110,100,96,46,0,67,111,110,110,101,99,116, 32,116,111,32,97,32,115,101,114,118,101,114,46,32,80,114,111,118,105,100, 101,32,97,32,115,111,99,107,101,116,44,32,116,104,105,115,32,119,105,108, 108,32,114,101,116,117,114,110,32,97,32,115,116,97,116,117,115,32,102,108, 97,103,32,97,110,100,32,97,110,32,101,114,114,111,114,32,99,111,100,101, 46,0,79,98,116,97,105,110,32,97,32,110,101,119,32,115,111,99,107,101, 116,46,0,71,101,116,32,116,104,101,32,104,111,115,116,32,73,80,32,105, 110,32,100,111,116,116,101,100,32,110,111,116,97,116,105,111,110,46,32,84, 104,101,32,104,111,115,116,32,105,115,32,115,112,101,99,105,102,105,101,100, 32,98,121,32,116,104,101,32,115,116,114,105,110,103,32,97,110,100,32,116, 104,101,32,97,100,100,114,101,115,115,32,105,115,32,116,104,101,32,115,116, 97,114,116,32,111,102,32,116,104,101,32,98,117,102,102,101,114,32,102,111, 114,32,116,104,101,32,100,111,116,116,101,100,32,73,80,46,0,80,114,101, 112,97,114,101,32,97,32,115,111,99,107,101,116,32,102,111,114,32,97,99, 99,101,112,116,105,110,103,32,105,110,99,111,109,105,110,103,32,99,111,110, 110,101,99,116,105,111,110,115,46,32,84,97,107,101,115,32,97,32,98,97, 99,107,108,111,103,32,99,111,117,110,116,32,40,110,49,41,32,97,110,100, 32,97,32,115,111,99,107,101,116,32,40,110,50,41,46,32,82,101,116,117, 114,110,115,32,97,32,102,108,97,103,32,40,48,32,115,117,99,99,101,115, 115,44,32,45,49,32,102,97,105,108,101,100,41,32,97,110,100,32,97,110, 32,101,114,114,111,114,32,99,111,100,101,46,0,84,114,105,103,103,101,114, 32,97,32,115,111,99,107,101,116,32,111,112,101,114,97,116,105,111,110,46, 32,84,104,105,115,32,105,115,32,110,111,116,32,105,110,116,101,110,100,101, 100,32,116,111,32,98,101,32,117,115,101,100,32,100,105,114,101,99,116,108, 121,46,0,82,101,99,101,105,118,101,32,100,97,116,97,32,102,114,111,109, 32,97,32,115,111,99,107,101,116,46,32,84,104,105,115,32,119,105,108,108, 32,114,101,97,100,32,105,110,116,111,32,109,101,109,111,114,121,32,115,116, 97,114,116,105,110,103,32,97,116,32,97,100,100,114,101,115,115,32,42,97, 42,44,32,117,112,32,116,111,32,42,110,49,42,32,98,121,116,101,115,46, 32,42,110,50,42,32,105,115,32,116,104,101,32,115,111,99,107,101,116,46, 32,82,101,116,117,114,110,115,32,116,104,101,32,110,117,109,98,101,114,32, 111,102,32,98,121,116,101,115,32,114,101,97,100,32,97,110,100,32,97,110, 32,101,114,114,111,114,32,99,111,100,101,46,0,83,101,110,100,32,97,32, 115,116,114,105,110,103,32,116,111,32,97,32,115,111,99,107,101,116,46,32, 84,104,105,115,32,119,105,108,108,32,114,101,116,117,114,110,32,116,104,101, 32,110,117,109,98,101,114,32,111,102,32,99,104,97,114,97,99,116,101,114, 115,32,115,101,110,116,32,97,110,100,32,97,110,32,101,114,114,111,114,32, 99,111,100,101,46,0,68,105,115,112,108,97,121,32,97,32,115,112,97,99, 101,32,40,96,65,83,67,73,73,58,83,80,65,67,69,96,41,0,83,116, 111,114,101,32,97,32,118,97,108,117,101,32,105,110,116,111,32,116,104,101, 32,115,112,101,99,105,102,105,101,100,32,97,100,100,114,101,115,115,46,0, 83,116,111,114,101,32,97,32,118,97,108,117,101,32,105,110,116,111,32,116, 104,101,32,115,112,101,99,105,102,105,101,100,32,97,100,100,114,101,115,115, 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,110,101,120,116, 32,97,100,100,114,101,115,115,46,0,69,120,99,104,97,110,103,101,32,116, 104,101,32,112,111,115,105,116,105,111,110,32,111,102,32,116,104,101,32,116, 111,112,32,116,119,111,32,105,116,101,109,115,32,111,110,32,116,104,101,32, 115,116,97,99,107,0,68,105,115,112,108,97,121,32,97,32,116,97,98,32, 40,96,65,83,67,73,73,58,72,84,96,41,0,67,111,110,118,101,114,116, 32,97,32,99,97,108,108,32,98,101,102,111,114,101,32,116,104,101,32,115, 101,109,105,99,111,108,111,110,32,116,111,32,97,32,106,117,109,112,46,0, 82,117,110,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,113,117, 111,116,101,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,110,117, 109,98,101,114,32,111,102,32,116,105,109,101,115,46,0,65,112,112,108,121, 32,113,49,32,97,103,97,105,110,115,116,32,120,44,32,116,104,101,110,32, 113,50,32,97,103,97,105,110,115,116,32,97,32,99,111,112,121,32,111,102, 32,120,44,32,97,110,100,32,102,105,110,97,108,108,121,32,113,51,32,97, 103,97,105,110,115,116,32,97,110,111,116,104,101,114,32,99,111,112,121,32, 111,102,32,120,46,0,65,112,112,108,121,32,113,49,32,97,103,97,105,110, 115,116,32,120,44,32,113,50,32,97,103,97,105,110,115,116,32,121,44,32, 97,110,100,32,113,51,32,97,103,97,105,110,115,116,32,122,46,0,65,112, 112,108,121,32,113,32,97,103,97,105,110,115,116,32,120,44,32,116,104,101, 110,32,97,103,97,105,110,115,116,32,121,44,32,97,110,100,32,102,105,110, 97,108,108,121,32,97,103,97,105,110,115,116,32,122,46,0,80,117,116,32, 97,32,99,111,112,121,32,111,102,32,116,104,101,32,116,111,112,32,105,116, 101,109,32,111,110,32,116,104,101,32,115,116,97,99,107,32,117,110,100,101, 114,32,116,104,101,32,115,101,99,111,110,100,32,111,110,101,46,0,82,101, 115,101,116,32,116,104,101,32,104,111,111,107,32,112,111,105,110,116,32,105, 110,32,97,49,32,116,111,32,116,104,101,32,100,101,102,97,117,108,116,32, 100,101,102,105,110,105,116,105,111,110,46,0,67,104,97,110,103,101,32,116, 104,101,32,99,117,114,114,101,110,116,32,119,111,114,107,105,110,103,32,100, 105,114,101,99,116,111,114,121,32,116,111,32,116,104,101,32,115,112,101,99, 105,102,105,101,100,32,111,110,101,46,0,82,101,116,117,114,110,32,116,104, 101,32,110,117,109,98,101,114,32,111,102,32,102,105,108,101,115,32,40,97, 110,100,32,115,117,98,100,105,114,101,99,116,111,114,105,101,115,41,32,105, 110,32,116,104,101,32,99,117,114,114,101,110,116,32,119,111,114,107,105,110, 103,32,100,105,114,101,99,116,111,114,121,0,69,120,101,99,117,116,101,32, 97,32,112,114,111,99,101,115,115,32,98,121,32,114,117,110,110,105,110,103, 32,116,104,101,32,97,112,112,108,105,99,97,116,105,111,110,32,115,112,101, 99,105,102,105,101,100,32,98,121,32,115,46,0,69,120,101,99,117,116,101, 32,97,32,112,114,111,99,101,115,115,32,98,121,32,114,117,110,110,105,110, 103,32,116,104,101,32,97,112,112,108,105,99,97,116,105,111,110,32,115,112, 101,99,105,102,105,101,100,32,98,121,32,115,49,46,32,80,97,115,115,32, 115,50,32,97,115,32,97,110,32,97,114,103,117,109,101,110,116,46,0,69, 120,101,99,117,116,101,32,97,32,112,114,111,99,101,115,115,32,98,121,32, 114,117,110,110,105,110,103,32,116,104,101,32,97,112,112,108,105,99,97,116, 105,111,110,32,115,112,101,99,105,102,105,101,100,32,98,121,32,115,49,46, 32,80,97,115,115,32,115,50,32,97,110,100,32,115,51,32,97,115,32,97, 114,103,117,109,101,110,116,115,46,0,69,120,101,99,117,116,101,32,97,32, 112,114,111,99,101,115,115,32,98,121,32,114,117,110,110,105,110,103,32,116, 104,101,32,97,112,112,108,105,99,97,116,105,111,110,32,115,112,101,99,105, 102,105,101,100,32,98,121,32,115,49,46,32,80,97,115,115,32,115,50,44, 32,115,51,44,32,97,110,100,32,115,52,32,97,115,32,97,114,103,117,109, 101,110,116,115,46,0,82,117,110,115,32,97,110,111,116,104,101,114,32,97, 112,112,108,105,99,97,116,105,111,110,32,97,110,100,32,114,101,116,117,114, 110,32,97,102,116,101,114,32,101,120,101,99,117,116,105,111,110,32,105,115, 32,99,111,109,112,108,101,116,101,100,46,32,84,104,105,115,32,100,111,101, 115,32,110,111,116,32,105,110,118,111,107,101,32,116,104,101,32,115,104,101, 108,108,32,108,105,107,101,32,96,117,110,105,120,58,115,121,115,116,101,109, 96,32,97,110,100,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111, 114,116,32,103,108,111,98,98,105,110,103,46,0,69,120,105,116,32,116,104, 101,32,99,117,114,114,101,110,116,32,112,114,111,99,101,115,115,44,32,114, 101,116,117,114,110,105,110,103,32,116,104,101,32,115,112,101,99,105,102,105, 101,100,32,114,101,116,117,114,110,32,99,111,100,101,46,0,82,117,110,32, 97,32,113,117,111,116,101,32,111,110,99,101,32,102,111,114,32,101,97,99, 104,32,102,105,108,101,32,111,114,32,115,117,98,100,105,114,101,99,116,111, 114,121,32,105,110,32,116,104,101,32,99,117,114,114,101,110,116,32,100,105, 114,101,99,116,111,114,121,46,32,84,104,101,32,113,117,111,116,101,32,119, 105,108,108,32,114,101,99,101,105,118,101,32,116,104,101,32,102,105,108,101, 32,110,97,109,101,32,97,115,32,97,32,115,116,114,105,110,103,32,97,110, 100,32,115,104,111,117,108,100,32,99,111,110,115,117,109,101,32,116,104,105, 115,32,97,110,100,32,114,101,116,117,114,110,32,110,111,116,104,105,110,103, 32,111,110,32,116,104,101,32,115,116,97,99,107,46,0,70,111,114,107,32, 116,104,101,32,99,117,114,114,101,110,116,32,112,114,111,99,101,115,115,46, 32,82,101,116,117,114,110,115,32,97,32,80,73,68,46,0,82,101,116,117, 114,110,32,116,104,101,32,99,117,114,114,101,110,116,32,119,111,114,107,105, 110,103,32,100,105,114,101,99,116,111,114,121,0,71,101,116,32,97,110,32, 101,110,118,105,114,111,110,109,101,110,116,32,118,97,114,105,97,98,108,101, 46,32,80,114,111,118,105,100,101,32,116,104,101,32,110,97,109,101,32,97, 110,100,32,97,110,32,97,100,100,114,101,115,115,32,116,111,32,115,116,111, 114,101,32,105,116,32,105,110,46,0,82,101,116,117,114,110,32,116,104,101, 32,80,73,68,32,111,102,32,116,104,101,32,99,117,114,114,101,110,116,32, 112,114,111,99,101,115,115,46,0,84,101,114,109,105,110,97,116,101,115,32, 97,32,112,114,111,99,101,115,115,46,32,84,97,107,101,115,32,97,32,112, 114,111,99,101,115,115,32,97,110,100,32,97,32,115,105,103,110,97,108,32, 116,111,32,115,101,110,100,46,0,67,108,111,115,101,32,97,32,112,105,112, 101,46,0,84,97,107,101,115,32,97,32,115,116,114,105,110,103,32,119,105, 116,104,32,97,32,85,110,105,120,32,99,111,109,109,97,110,100,32,108,105, 110,101,32,97,110,100,32,114,117,110,32,105,116,32,105,110,32,97,32,112, 105,112,101,44,32,114,101,116,117,114,110,105,110,103,32,97,32,110,101,119, 32,115,116,114,105,110,103,32,119,105,116,104,32,116,104,101,32,102,105,114, 115,116,32,108,105,110,101,32,111,102,32,116,104,101,32,111,117,116,112,117, 116,32,102,114,111,109,32,116,104,101,32,112,105,112,101,46,0,79,112,101, 110,32,97,32,112,105,112,101,46,32,84,97,107,101,115,32,97,32,99,111, 109,109,97,110,100,32,116,111,32,114,117,110,44,32,97,110,100,32,97,32, 102,105,108,101,32,109,111,100,101,32,40,96,102,105,108,101,58,82,96,32, 111,114,32,96,102,105,108,101,58,87,96,59,32,96,102,105,108,101,58,82, 43,96,32,109,97,121,32,119,111,114,107,32,111,110,32,115,111,109,101,32, 115,121,115,116,101,109,115,41,46,32,82,101,116,117,114,110,115,32,97,32, 102,105,108,101,32,73,68,32,117,115,97,98,108,101,32,119,105,116,104,32, 119,111,114,100,115,32,105,110,32,116,104,101,32,96,102,105,108,101,58,96, 32,110,97,109,101,115,112,97,99,101,46,0,84,97,107,101,115,32,97,32, 115,116,114,105,110,103,32,105,110,32,116,104,101,32,102,111,114,109,32,96, 110,97,109,101,61,118,97,108,117,101,96,32,97,110,100,32,115,101,116,115, 32,97,110,32,101,110,118,105,114,111,110,109,101,110,116,32,118,97,114,105, 97,98,108,101,32,110,97,109,101,100,32,96,110,97,109,101,96,32,116,111, 32,96,118,97,108,117,101,96,46,0,83,108,101,101,112,32,102,111,114,32, 116,104,101,32,115,112,101,99,105,102,105,101,100,32,110,117,109,98,101,114, 32,111,102,32,115,101,99,111,110,100,115,46,0,79,112,101,110,32,97,32, 112,105,112,101,46,32,82,101,97,100,32,97,108,108,32,111,117,116,112,117, 116,32,102,114,111,109,32,116,104,101,32,112,105,112,101,32,40,117,110,116, 105,108,32,65,83,67,73,73,58,78,85,76,76,41,32,97,110,100,32,115, 116,111,114,101,32,105,110,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,98,117,102,102,101,114,46,32,82,101,116,117,114,110,32,116,104,101, 32,110,117,109,98,101,114,32,111,102,32,98,121,116,101,115,32,114,101,97, 100,46,0,82,117,110,115,32,97,110,111,116,104,101,114,32,97,112,112,108, 105,99,97,116,105,111,110,32,117,115,105,110,103,32,116,104,101,32,115,121, 115,116,101,109,32,115,104,101,108,108,32,97,110,100,32,114,101,116,117,114, 110,115,32,97,102,116,101,114,32,101,120,101,99,117,116,105,111,110,32,105, 115,32,99,111,109,112,108,101,116,101,100,46,0,87,97,105,116,115,32,102, 111,114,32,97,32,99,104,105,108,100,32,112,114,111,99,101,115,115,32,116, 111,32,99,111,109,112,108,101,116,101,46,32,84,104,105,115,32,109,97,112, 115,32,116,111,32,116,104,101,32,119,97,105,116,40,41,32,115,121,115,116, 101,109,32,99,97,108,108,46,0,85,110,112,97,99,107,32,97,32,51,50, 45,98,105,116,32,118,97,108,117,101,32,105,110,116,111,32,102,111,117,114, 32,56,45,98,105,116,32,118,97,108,117,101,115,46,0,77,117,108,116,105, 112,108,121,32,96,110,49,96,32,98,121,32,96,110,50,96,32,97,110,100, 32,114,101,116,117,114,110,32,116,104,101,32,114,101,115,117,108,116,46,0, 77,117,108,116,105,112,108,121,32,96,120,96,32,98,121,32,96,121,96,32, 97,110,100,32,116,104,101,110,32,100,105,118,105,100,101,32,98,121,32,96, 122,96,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,105,110, 116,101,103,101,114,32,112,97,114,116,32,111,102,32,116,104,101,32,113,117, 111,116,105,101,110,116,32,97,110,100,32,114,101,109,97,105,110,100,101,114, 46,0,65,100,100,32,96,110,49,96,32,116,111,32,96,110,50,96,32,97, 110,100,32,114,101,116,117,114,110,32,116,104,101,32,114,101,115,117,108,116, 46,0,83,117,98,116,114,97,99,116,32,96,110,50,96,32,102,114,111,109, 32,96,110,49,96,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101, 32,114,101,115,117,108,116,46,0,67,111,109,112,97,114,101,32,116,119,111, 32,118,97,108,117,101,115,32,102,111,114,32,105,110,101,113,117,97,108,105, 116,121,46,32,82,101,116,117,114,110,115,32,96,84,82,85,69,96,32,105, 102,32,116,104,101,121,32,97,114,101,32,110,111,116,32,101,113,117,97,108, 32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101,114,119,105,115, 101,46,0,68,105,118,105,100,101,32,96,110,96,32,98,121,32,96,109,96, 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,105,110,116,101, 103,101,114,32,112,97,114,116,32,111,102,32,116,104,101,32,113,117,111,116, 105,101,110,116,32,97,110,100,32,114,101,109,97,105,110,100,101,114,46,0, 67,111,109,112,97,114,101,32,116,119,111,32,118,97,108,117,101,115,32,102, 111,114,32,101,113,117,97,108,105,116,121,46,32,82,101,116,117,114,110,115, 32,96,84,82,85,69,96,32,105,102,32,116,104,101,121,32,97,114,101,32, 101,113,117,97,108,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104, 101,114,119,105,115,101,46,0,67,111,109,112,97,114,101,32,110,49,32,97, 110,100,32,110,50,46,32,82,101,116,117,114,110,32,96,84,82,85,69,96, 32,105,102,32,110,49,32,105,115,32,103,114,101,97,116,101,114,32,116,104, 97,110,32,110,50,44,32,111,114,32,96,70,65,76,83,69,96,32,111,116, 104,101,114,119,105,115,101,46,0,67,111,109,112,97,114,101,32,110,49,32, 97,110,100,32,110,50,46,32,82,101,116,117,114,110,32,96,84,82,85,69, 96,32,105,102,32,110,49,32,105,115,32,108,101,115,115,32,116,104,97,110, 32,110,50,44,32,111,114,32,96,70,65,76,83,69,96,32,111,116,104,101, 114,119,105,115,101,46,0,80,101,102,111,114,109,32,97,32,98,105,116,119, 105,115,101,32,115,104,105,102,116,32,111,102,32,109,32,98,121,32,110,32, 98,105,116,115,46,32,73,102,32,110,32,105,115,32,112,111,115,105,116,105, 118,101,44,32,115,104,105,102,116,32,114,105,103,104,116,46,32,73,102,32, 110,101,103,97,116,105,118,101,44,32,116,104,101,32,115,104,105,102,116,32, 119,105,108,108,32,98,101,32,116,111,32,116,104,101,32,108,101,102,116,46, 0,69,120,101,99,117,116,101,32,113,117,111,116,101,32,114,101,112,101,97, 116,101,100,108,121,32,119,104,105,108,101,32,116,104,101,32,113,117,111,116, 101,32,114,101,116,117,114,110,115,32,97,32,118,97,108,117,101,32,111,102, 32,96,70,65,76,83,69,96,46,32,84,104,101,32,113,117,111,116,101,32, 115,104,111,117,108,100,32,114,101,116,117,114,110,32,97,32,102,108,97,103, 32,111,102,32,101,105,116,104,101,114,32,96,84,82,85,69,96,32,111,114, 32,96,70,65,76,83,69,96,44,32,116,104,111,117,103,104,32,96,117,110, 116,105,108,96,32,119,105,108,108,32,116,114,101,97,116,32,97,110,121,32, 110,111,110,45,122,101,114,111,32,118,97,108,117,101,32,97,115,32,96,84, 82,85,69,96,46,0,68,101,99,114,101,109,101,110,116,32,116,104,101,32, 118,97,108,117,101,32,115,116,111,114,101,100,32,97,116,32,116,104,101,32, 115,112,101,99,105,102,105,101,100,32,97,100,100,114,101,115,115,32,98,121, 32,49,46,0,68,101,99,114,101,109,101,110,116,32,116,104,101,32,118,97, 108,117,101,32,115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112, 101,99,105,102,105,101,100,32,97,100,100,114,101,115,115,32,98,121,32,116, 104,101,32,115,112,101,99,105,102,105,101,100,32,118,97,108,117,101,46,0, 73,110,99,114,101,109,101,110,116,32,116,104,101,32,118,97,108,117,101,32, 115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112,101,99,105,102, 105,101,100,32,97,100,100,114,101,115,115,32,98,121,32,49,46,0,73,110, 99,114,101,109,101,110,116,32,116,104,101,32,118,97,108,117,101,32,115,116, 111,114,101,100,32,97,116,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,97,100,100,114,101,115,115,32,98,121,32,116,104,101,32,115,112,101, 99,105,102,105,101,100,32,118,97,108,117,101,46,0,70,101,116,99,104,32, 116,104,101,32,118,97,108,117,101,32,115,116,111,114,101,100,32,97,116,32, 116,104,101,32,97,100,100,114,101,115,115,44,32,116,104,101,110,32,114,117, 110,32,96,110,58,108,105,109,105,116,96,32,97,103,97,105,110,115,116,32, 105,116,44,32,117,115,105,110,103,32,116,104,101,32,115,112,101,99,105,102, 105,101,100,32,108,111,119,101,114,32,97,110,100,32,117,112,112,101,114,32, 98,111,117,110,100,115,46,32,84,104,101,110,32,115,116,111,114,101,32,116, 104,101,32,114,101,115,117,108,116,105,110,103,32,118,97,108,117,101,32,98, 97,99,107,32,116,111,32,116,104,101,32,111,114,105,103,105,110,97,108,32, 97,100,100,114,101,115,115,46,0,83,101,116,32,97,32,118,97,114,105,97, 98,108,101,32,116,111,32,48,46,0,83,101,116,32,97,32,118,97,114,105, 97,98,108,101,32,116,111,32,45,49,46,0,77,97,107,101,32,97,32,99, 111,112,121,32,111,102,32,116,104,101,32,118,97,108,117,101,32,97,116,32, 116,104,101,32,97,100,100,114,101,115,115,44,32,116,104,101,110,32,114,117, 110,32,116,104,101,32,113,117,111,116,101,46,32,79,110,99,101,32,116,104, 101,32,113,117,111,116,101,32,99,111,109,112,108,101,116,101,115,44,32,114, 101,115,116,111,114,101,32,116,104,101,32,97,100,100,114,101,115,115,32,116, 111,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,118,97,108,117, 101,46,0,70,101,116,99,104,32,97,32,118,97,108,117,101,32,102,114,111, 109,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100,100,114, 101,115,115,44,32,116,104,101,110,32,114,117,110,32,116,104,101,32,113,117, 111,116,97,116,105,111,110,32,119,105,116,104,32,116,104,105,115,32,118,97, 108,117,101,32,111,110,32,116,104,101,32,115,116,97,99,107,46,32,65,102, 116,101,114,119,97,114,100,115,44,32,115,116,111,114,101,32,116,104,101,32, 114,101,116,117,114,110,101,100,32,118,97,108,117,101,32,97,116,32,116,104, 101,32,111,114,105,103,105,110,97,108,32,97,100,100,114,101,115,115,46,0, 67,114,101,97,116,101,32,97,32,118,97,114,105,97,98,108,101,46,32,84, 104,101,32,118,97,114,105,97,98,108,101,32,105,115,32,105,110,105,116,105, 97,108,105,122,101,100,32,116,111,32,48,46,0,67,114,101,97,116,101,32, 97,32,118,97,114,105,97,98,108,101,32,119,105,116,104,32,116,104,101,32, 115,112,101,99,105,102,105,101,100,32,105,110,105,116,105,97,108,32,118,97, 108,117,101,46,0,67,114,101,97,116,101,32,97,32,118,97,114,105,97,98, 108,101,32,119,105,116,104,32,116,104,101,32,115,112,101,99,105,102,105,101, 100,32,105,110,105,116,105,97,108,32,118,97,108,117,101,46,0,70,101,116, 99,104,32,116,104,101,32,51,50,45,98,105,116,32,118,97,108,117,101,32, 115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112,101,99,105,102, 105,101,100,32,97,100,100,114,101,115,115,46,32,65,100,100,114,101,115,115, 105,110,103,32,102,111,114,32,116,104,105,115,32,105,115,32,105,110,32,56, 45,98,105,116,32,117,110,105,116,115,46,32,84,104,101,32,97,100,100,114, 101,115,115,32,109,117,115,116,32,98,101,32,97,108,105,103,110,101,100,32, 111,110,32,97,32,102,111,117,114,32,98,121,116,101,32,98,111,117,110,100, 97,114,121,46,0,70,101,116,99,104,32,116,104,101,32,118,97,108,117,101, 32,115,116,111,114,101,100,32,97,116,32,116,104,101,32,115,112,101,99,105, 102,105,101,100,32,97,100,100,114,101,115,115,46,32,82,101,116,117,114,110, 115,32,116,104,101,32,110,101,120,116,32,97,100,100,114,101,115,115,32,97, 110,100,32,116,104,101,32,118,97,108,117,101,46,0,83,116,111,114,101,32, 97,110,32,51,50,45,98,105,116,32,118,97,108,117,101,32,105,110,116,111, 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,97,100,100,114,101, 115,115,46,32,65,100,100,114,101,115,115,105,110,103,32,102,111,114,32,116, 104,105,115,32,105,115,32,105,110,32,56,45,98,105,116,32,117,110,105,116, 115,46,32,84,104,101,32,97,100,100,114,101,115,115,32,109,117,115,116,32, 98,101,32,97,108,105,103,110,101,100,32,111,110,32,97,32,102,111,117,114, 32,98,121,116,101,32,98,111,117,110,100,97,114,121,46,0,83,116,111,114, 101,32,97,32,118,97,108,117,101,32,105,110,116,111,32,116,104,101,32,115, 112,101,99,105,102,105,101,100,32,97,100,100,114,101,115,115,32,97,110,100, 32,114,101,116,117,114,110,32,116,104,101,32,110,101,120,116,32,97,100,100, 114,101,115,115,46,0,69,120,101,99,117,116,101,32,113,117,111,116,101,32, 114,101,112,101,97,116,101,100,108,121,32,119,104,105,108,101,32,116,104,101, 32,113,117,111,116,101,32,114,101,116,117,114,110,115,32,97,32,96,84,82, 85,69,96,32,118,97,108,117,101,46,32,84,104,101,32,113,117,111,116,101, 32,115,104,111,117,108,100,32,114,101,116,117,114,110,32,97,32,102,108,97, 103,32,111,102,32,101,105,116,104,101,114,32,96,84,82,85,69,96,32,111, 114,32,96,70,65,76,83,69,96,44,32,116,104,111,117,103,104,32,96,119, 104,105,108,101,96,32,119,105,108,108,32,116,114,101,97,116,32,97,110,121, 32,110,111,110,45,122,101,114,111,32,118,97,108,117,101,32,97,115,32,96, 84,82,85,69,96,46,0,80,101,114,102,111,114,109,32,97,32,98,105,116, 119,105,115,101,32,88,79,82,32,111,112,101,114,97,116,105,111,110,46,0, 66,101,103,105,110,32,97,110,32,97,114,114,97,121,46,32,84,104,105,115, 32,105,115,32,105,110,116,101,110,100,101,100,32,116,111,32,109,97,107,101, 32,99,114,101,97,116,105,110,103,32,97,114,114,97,121,115,32,97,32,98, 105,116,32,99,108,101,97,110,101,114,32,116,104,97,110,32,117,115,105,110, 103,32,97,32,113,117,111,116,97,116,105,111,110,32,97,110,100,32,96,97, 58,99,111,117,110,116,101,100,45,114,101,115,117,108,116,115,96,46,0,66, 101,103,105,110,32,97,32,108,101,120,105,99,97,108,108,121,32,115,99,111, 112,101,100,32,97,114,101,97,46,0,67,111,109,112,108,101,116,101,32,97, 110,32,97,114,114,97,121,32,98,101,103,117,110,32,98,121,32,96,123,96, 46,32,82,101,116,117,114,110,115,32,97,32,112,111,105,110,116,101,114,32, 116,111,32,116,104,101,32,100,97,116,97,46,0,69,110,100,32,97,32,108, 101,120,105,99,97,108,108,121,32,115,99,111,112,101,100,32,97,114,101,97, 46,32,84,104,105,115,32,119,105,108,108,32,104,105,100,101,32,97,110,121, 32,104,101,97,100,101,114,115,32,98,101,116,119,101,101,110,32,96,123,123, 96,32,97,110,100,32,96,45,45,45,114,101,118,101,97,108,45,45,45,96, 44,32,108,101,97,118,105,110,103,32,111,110,108,121,32,104,101,97,100,101, 114,115,32,98,101,116,119,101,101,110,32,96,45,45,45,114,101,118,101,97, 108,45,45,45,96,32,97,110,100,32,116,104,101,32,96,125,125,96,32,118, 105,115,105,98,108,101,46,0,27784,67847,168,68166,-460132687,67849,200,200,0,105,109,97, 103,101,58,115,97,118,101,0,2049,5525,115,45,0,1,67849,3,1,1000,2049,12792, 2049,12769,10,67827,67877,168,0,257642186,0,200,200,0,101,100,105,116,63,0,2,1793, 67884,1,8,11,10,1,67880,1793,67892,1,127,11,10,1,67888,2049,2923,22,10,67862, 67914,168,0,-76077980,0,200,200,0,101,110,100,101,100,63,0,2049,5153,3841,5274,2049, 3411,10,67898,67934,168,0,193486030,0,200,200,0,97,100,100,0,2049,67914,1,17,1, 5063,2049,66,10,67921,67959,168,0,-12645824,0,200,200,0,103,97,116,104,101,114,0, 2049,67877,1,17,1,67934,2049,66,10,67943,67983,168,0,256018261,0,200,200,0,99,121, 99,108,101,0,2049,13090,2049,2873,4,8,2049,3372,25,3,2049,67959,1,67983,7,10, 67827,68020,168,68166,-1658019367,68022,200,200,0,112,97,114,115,101,45,117,110,116,105,108, 0,2049,5525,113,45,115,0,1,68022,3,1793,68041,2049,5500,2049,5179,2049,67983,771,2049, 5017,10,1,68031,2049,5209,10,67999,68061,168,68166,272733106,68063,200,200,0,115,58,103,101, 116,0,2049,5525,45,115,0,1,68063,3,1793,68091,1793,68077,1,13,11,10,1,68073, 1793,68085,1,10,11,10,1,68081,2049,2923,22,10,1,68071,2049,68020,10,68046,68111,168, 68166,255552908,68113,200,200,0,99,108,101,97,114,0,2049,5525,45,0,1,68113,3,2049, 5525,92,94,91,50,74,92,94,91,48,59,48,72,0,1,68120,2049,9899,2049,12918, 10,68096,68152,180,68166,5861507,68154,200,200,0,47,47,0,2049,5525,45,0,1,68154,3, 2049,24514,1,13132,2049,4808,10,105,110,116,101,114,102,97,99,101,47,114,101,116, 114,111,45,117,110,105,120,46,114,101,116,114,111,0,68140,68210,156,0,72570505,0, 200,200,0,83,111,117,114,99,101,115,0,3,68461,68920,69218,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68193, 68354,168,0,159149617,0,200,200,0,107,110,111,119,110,63,0,2,1,68210,2049,10843, 10,68338,68375,168,0,262739357,0,200,200,0,105,110,100,101,120,0,1,68210,4,2049, 11579,1,68210,4,2049,11005,10,68360,68402,168,0,421984292,0,200,200,0,114,101,99,111, 114,100,0,2049,5557,2,1,68210,2049,4744,3841,68210,1,68210,17,16,10,1793,68459,2049, 24425,2049,68354,1,68375,1,68402,2049,66,1793,68437,1,202,1,2,17,8,10,1,68430, 2049,2889,2049,2100,2049,186,16,2049,2100,2049,198,3841,13770,8,2049,2100,2049,188,16,10, 1,68418,100,105,99,116,45,119,111,114,100,115,45,108,105,115,116,105,110,103, 46,102,111,114,116,104,0,68140,68503,168,68461,-1519205998,68505,200,200,0,100,58,119,111, 114,100,115,0,2049,5525,45,0,1,68505,3,1793,68519,2049,198,2049,12918,2049,12880,10, 1,68512,2049,10176,10,68486,68546,168,68461,1750461083,68548,200,200,0,100,58,119,111,114,100, 115,45,119,105,116,104,0,2049,5525,115,45,0,1,68548,3,2049,2585,2049,6805,1793, 68585,2049,198,2,2049,2585,2049,6473,1793,68574,2049,12918,2049,12880,10,1,68569,1793,68580,3, 10,1,68578,2049,66,10,1,68560,2049,10176,10,68524,68615,168,68461,-1509196721,0,200,200,0, 100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,2585,2049, 6743,1793,68627,2049,12918,2049,12880,10,1,68622,1793,68633,3,10,1,68631,2049,66,10,68524, 68670,168,68461,-1159574567,68672,200,200,0,100,58,119,111,114,100,115,45,98,101,103,105, 110,110,105,110,103,45,119,105,116,104,0,2049,5525,115,45,0,1,68672,3,2049, 2585,2049,6805,1793,68689,2049,198,2049,68615,10,1,68684,2049,10176,10,68638,68727,168,68461,-986950196, 68729,200,200,0,100,58,119,111,114,100,115,45,109,105,115,115,105,110,103,45, 100,101,116,97,105,108,115,0,2049,5525,45,0,1,68729,3,2049,5525,68,46,83, 116,97,99,107,58,0,1,68736,2049,12918,2049,12863,1793,68775,2,2049,190,15,2049,3470, 1793,68768,2049,198,2049,12918,2049,12880,10,1,68761,1,17,2049,66,10,1,68753,2049,10176, 2049,12863,2049,5525,65,46,83,116,97,99,107,58,0,1,68783,2049,12918,2049,12863,1793, 68822,2,2049,192,15,2049,3470,1793,68815,2049,198,2049,12918,2049,12880,10,1,68808,1,17, 2049,66,10,1,68800,2049,10176,2049,12863,2049,5525,70,46,83,116,97,99,107,58,0, 1,68830,2049,12918,2049,12863,1793,68869,2,2049,194,15,2049,3470,1793,68862,2049,198,2049,12918, 2049,12880,10,1,68855,1,17,2049,66,10,1,68847,2049,10176,2049,12863,2049,5525,68,101, 115,99,58,0,1,68877,2049,12918,2049,12863,1793,68913,2,2049,196,15,2049,3470,1793,68906, 2049,198,2049,12918,2049,12880,10,1,68899,1,17,2049,66,10,1,68891,2049,10176,2049,12863, 10,101,120,116,101,110,115,105,111,110,115,47,100,111,117,98,108,101,46,114, 101,116,114,111,0,68694,68964,168,68920,-1059603453,68966,200,200,0,100,111,117,98,108,101, 58,118,97,114,0,2049,5525,110,110,115,45,0,1,68966,3,2049,2695,4,2049,130, 2049,130,10,68944,69004,168,68920,1419216868,69006,200,200,0,100,111,117,98,108,101,58,102, 101,116,99,104,0,2049,5525,97,45,110,110,0,1,69006,3,2049,58,4,15,10, 68982,69041,168,68920,1435167943,69043,200,200,0,100,111,117,98,108,101,58,115,116,111,114, 101,0,2049,5525,110,110,97,45,0,1,69043,3,1,19,2049,2889,2049,61,16,10, 69019,69081,168,68920,1416012481,69083,200,200,0,100,111,117,98,108,101,58,99,111,110,115, 116,0,2049,5525,110,110,115,45,0,1,69083,3,2049,68964,1,69004,2049,10141,10,69059, 69119,168,68920,-607259883,69121,200,200,0,100,111,117,98,108,101,58,115,119,97,112,0, 2049,5525,110,110,109,109,45,109,109,110,110,0,1,69121,3,67503109,5,67503109,6,10, 69098,69159,168,68920,-1059622793,69161,200,200,0,100,111,117,98,108,101,58,100,105,112,0, 2049,5525,109,110,113,45,109,110,0,1,69161,3,67503109,67503109,5,5,8,6,6,10, 69139,69199,168,68920,-1059606458,69201,200,200,0,100,111,117,98,108,101,58,115,105,112,0, 2049,5525,109,110,113,45,109,110,0,1,69201,3,1,2873,2049,2889,2049,69159,10,101, 120,116,101,110,115,105,111,110,115,47,109,97,108,108,111,99,46,114,101,116, 114,111,0,69179,69262,168,69218,-386501686,0,200,200,0,109,101,109,58,105,110,118,111, 107,101,0,1,15,2049,12792,2049,12769,10,69242,0,156,69218,214053744,0,200,200,0,65, 76,76,79,67,0,69269,1,156,69218,2089080839,0,200,200,0,70,82,69,69,0,69284, 2,156,69218,235691186,0,200,200,0,83,84,79,82,69,0,69298,3,156,69218,219740111,0, 200,200,0,70,69,84,67,72,0,69313,4,156,69218,-868914953,0,200,200,0,82,69, 83,73,90,69,0,69179,69363,168,69218,369169257,69365,200,200,0,109,101,109,58,97,108, 108,111,99,0,2049,5525,110,45,45,97,0,1,69365,3,1,0,2049,69262,10,69344, 69397,168,69218,390806699,69399,200,200,0,109,101,109,58,115,116,111,114,101,0,2049,5525, 97,110,45,45,0,1,69399,3,1,2,2049,69262,10,69378,69431,168,69218,374855624,69433,200, 200,0,109,101,109,58,102,101,116,99,104,0,2049,5525,97,45,45,110,0,1, 69433,3,1,3,2049,69262,10,69412,69464,168,69218,1963630784,69466,200,200,0,109,101,109,58, 102,114,101,101,0,2049,5525,97,45,45,0,1,69466,3,1,1,2049,69262,10,69446, 69498,168,69218,-45070288,69500,200,200,0,109,101,109,58,114,101,115,105,122,101,0,2049, 5525,97,110,45,45,0,1,69500,3,1,4,2049,69262,10,69478,69532,168,69218,371289385,69534, 200,200,0,109,101,109,58,99,101,108,108,43,0,2049,5525,110,110,45,110,0, 1,69534,3,1,8,19,17,10,69513,69573,168,69218,84495120,69575,200,200,0,109,101,109, 58,102,101,116,99,104,45,100,111,117,98,108,101,0,2049,5525,110,45,110,110, 0,1,69575,3,2,1,1,2049,69532,15,5,2049,69431,6,10,69547,69620,168,69218,1277424275, 69622,200,200,0,109,101,109,58,115,116,111,114,101,45,100,111,117,98,108,101, 0,2049,5525,97,110,110,45,110,110,0,1,69622,3,5,5,2049,2873,1,1,2049, 69532,6,2049,69397,6,2049,69397,10,0 }; typedef struct NgaState NgaState; typedef void (*Handler)(NgaState *); struct NgaCore { CELL sp, rp, ip; /* Stack & instruction pointers */ CELL active; /* Is core active? */ CELL u; /* Should next operation be */ /* unsigned? */ CELL data[STACK_DEPTH]; /* The data stack */ CELL address[ADDRESSES]; /* The address stack */ #ifdef ENABLE_MULTICORE CELL registers[24]; /* Internal Registers */ #endif }; struct NgaState { /* System Memory */ CELL memory[IMAGE_SIZE + 1]; /* CPU Cores */ struct NgaCore cpu[CORES]; int active; /* I/O Devices */ int devices; Handler IO_deviceHandlers[MAX_DEVICES]; Handler IO_queryHandlers[MAX_DEVICES]; CELL Dictionary, interpret; /* Interfacing */ char string_data[8192]; #ifdef ENABLE_FLOATS double Floats[256], AFloats[256]; /* Floating Point */ CELL fsp, afsp; #endif #ifdef ENABLE_BLOCKS char BlockFile[1025]; #endif #ifdef ENABLE_ERROR CELL ErrorHandlers[64]; #endif /* Scripting */ char **sys_argv; int sys_argc; char scripting_sources[64][8192]; char line[4096]; int current_source; int perform_abort; int interactive; CELL currentLine; CELL ignoreToEOL, ignoreToEOF; /* Configuration of code & test fences for Unu */ char code_start[256], code_end[256]; char test_start[256], test_end[256]; int codeBlocks; FILE *OpenFileHandles[MAX_OPEN_FILES]; }; #define V void #define IO(name) void io_name(NgaState *); void query_name(NgaState *); /* Function Prototypes ----------------------------------------------- */ V handle_error(NgaState *, CELL); CELL stack_pop(NgaState *); V stack_push(NgaState *, CELL); CELL string_inject(NgaState *, char *, CELL); char *string_extract(NgaState *, CELL); V update_rx(NgaState *); V include_file(NgaState *, char *, int); V include_plain_file(NgaState *, char *, int); V register_device(NgaState *, V *, V *); IO(output) IO(keyboard) IO(filesystem) IO(scripting) IO(rng) IO(unsigned) #ifdef ENABLE_UNIX IO(unix) #endif #ifdef ENABLE_FLOATS IO(floatingpoint) #endif #ifdef ENABLE_SOCKETS IO(socket) #endif #ifdef ENABLE_MALLOC #ifdef BIT64 IO(malloc) #endif #endif #ifdef ENABLE_BLOCKS IO(blocks) #endif #ifdef ENABLE_IOCTL IO(ioctl) #endif IO(image) V load_embedded_image(NgaState *); CELL load_image(NgaState *, char *); V prepare_vm(NgaState *); V process_opcode_bundle(NgaState *, CELL); #ifndef BRANCH_PREDICTION V validate_opcode_bundle(NgaState *, CELL); #endif #ifdef NEEDS_STRL size_t strlcat(char *dst, const char *src, size_t dsize); size_t strlcpy(char *dst, const char *src, size_t dsize); #endif V i_no(NgaState *); V i_li(NgaState *); V i_du(NgaState *); V i_dr(NgaState *); V i_sw(NgaState *); V i_pu(NgaState *); V i_po(NgaState *); V i_ju(NgaState *); V i_ca(NgaState *); V i_cc(NgaState *); V i_re(NgaState *); V i_eq(NgaState *); V i_ne(NgaState *); V i_lt(NgaState *); V i_gt(NgaState *); V i_fe(NgaState *); V i_st(NgaState *); V i_ad(NgaState *); V i_su(NgaState *); V i_mu(NgaState *); V i_di(NgaState *); V i_an(NgaState *); V i_or(NgaState *); V i_xo(NgaState *); V i_sh(NgaState *); V i_zr(NgaState *); V i_ha(NgaState *); V i_ie(NgaState *); V i_iq(NgaState *); V i_ii(NgaState *); /* Image, Stack, and VM variables ------------------------------------ */ #define TOS ACTIVE.data[ACTIVE.sp] #define NOS ACTIVE.data[ACTIVE.sp-1] #define TORS ACTIVE.address[ACTIVE.rp] /* Global Variables -------------------------------------------------- */ int verbose; #ifndef BRANCH_PREDICTION V guard(NgaState *vm, int n, int m, int diff) { if (ACTIVE.sp < n) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[1] != 0) { handle_error(vm, 1); } #else printf("E: Data Stack Underflow"); ACTIVE.sp = 0; return; #endif } if (((ACTIVE.sp + m) - n) > (STACK_DEPTH - 1)) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[2] != 0) { handle_error(vm, 2); } #else printf("E: Data Stack Overflow"); ACTIVE.sp = 0; return; #endif } if (diff) { if (ACTIVE.rp + diff < 0) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[3] != 0) { handle_error(vm, 3); } #else return; #endif } if (ACTIVE.rp + diff > (ADDRESSES - 1)) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[1] != 4) { handle_error(vm, 4); } #else return; #endif } } } #else V guard(NgaState *vm, int n, int m, int diff) { if (unlikely(ACTIVE.sp < n)) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[1] != 0) { handle_error(vm, 1); } #else printf("E: Data Stack Underflow"); ACTIVE.sp = 0; return; #endif } if (unlikely(((ACTIVE.sp + m) - n) > (STACK_DEPTH - 1))) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[2] != 0) { handle_error(vm, 2); } #else printf("E: Data Stack Overflow"); ACTIVE.sp = 0; return; #endif } if (unlikely(ACTIVE.rp + diff < 0)) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[3] != 0) { handle_error(vm, 3); } #else return; #endif } if (unlikely(ACTIVE.rp + diff > (ADDRESSES - 1))) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[1] != 4) { handle_error(vm, 4); } #else return; #endif } } #endif #ifdef ENABLE_IOCTL /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_IOCTL #include #include void ioctl_get_terminal_size(NgaState *vm) { struct winsize size; ioctl(STDOUT_FILENO, TIOCGWINSZ, &size); stack_push(vm, size.ws_row); stack_push(vm, size.ws_col); } void ioctl_set_character_breaking_mode(NgaState *vm) { struct termios term; tcgetattr(STDIN_FILENO, &term); term.c_lflag &=(~ICANON & ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &term); } void ioctl_set_line_buffered_mode(NgaState *vm) { struct termios term; tcgetattr(STDIN_FILENO, &term); term.c_lflag |= ICANON; term.c_lflag |= ECHO; tcsetattr(STDIN_FILENO, TCSANOW, &term); } struct termios savedTermState; void ioctl_save_current_state(NgaState *vm) { tcgetattr(STDIN_FILENO, &savedTermState); } void ioctl_restore_saved_state(NgaState *vm) { tcsetattr(STDIN_FILENO, TCSANOW, &savedTermState); } Handler IOCTLActions[] = { ioctl_get_terminal_size, ioctl_set_character_breaking_mode, ioctl_set_line_buffered_mode, ioctl_save_current_state, ioctl_restore_saved_state }; V query_ioctl(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_IOCTL); } V io_ioctl(NgaState *vm) { IOCTLActions[stack_pop(vm)](vm); } #endif #endif #ifdef ENABLE_MALLOC #ifdef BIT64 /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_MALLOC #ifdef BIT64 typedef union { V* val; struct { CELL msw; CELL lsw; }; } double_cell; V double_add(NgaState *vm) { double_cell a; double_cell b; double_cell c; b.msw = stack_pop(vm); b.lsw = stack_pop(vm); a.msw = stack_pop(vm); a.lsw = stack_pop(vm); } V double_sub(NgaState *vm) { } V double_mul(NgaState *vm) { } V double_divmod(NgaState *vm) { } V malloc_allocate(NgaState *vm) { stack_push(vm, (CELL)malloc(stack_pop(vm))); } V malloc_free(NgaState *vm) { free((CELL*)stack_pop(vm)); } V malloc_store(NgaState *vm) { CELL value = stack_pop(vm); double_cell addr; *(CELL *) stack_pop(vm) = value; } V malloc_fetch(NgaState *vm) { double_cell addr; CELL value = *(CELL *)stack_pop(vm); stack_push(vm, value); } V malloc_realloc(NgaState *vm) { CELL bytes = stack_pop(vm); CELL* addr1; addr1 = (CELL*)stack_pop(vm); CELL* addr2; addr2 = (CELL*)realloc(addr1, bytes); stack_push(vm, (CELL)addr2); } V query_malloc(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_MALLOC); } V io_malloc(NgaState *vm) { int i = stack_pop(vm); switch (i) { case 0: malloc_allocate(vm); return; case 1: malloc_free(vm); return; case 2: malloc_store(vm); return; case 3: malloc_fetch(vm); return; case 4: malloc_realloc(vm); return; } stack_push(vm, -1); } #endif #endif #endif #endif #ifdef ENABLE_ERROR /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ /* | 001 | Data Stack Underflow | | 002 | Data Stack Overflow | | 003 | Address Stack Underflow | | 004 | Address Stack Overflow | | 005 | Invalid Memory Access | | 006 | Division by Zero | */ #ifdef ENABLE_ERROR V execute(NgaState *vm, CELL cell); V handle_error(NgaState *vm, CELL error) { CELL saved_ip = vm->cpu[vm->active].ip; if (vm->ErrorHandlers[error] != 0) { printf("\nHandling %lld\n", (long long)error); execute(vm, vm->ErrorHandlers[error]); } vm->cpu[vm->active].ip = saved_ip; } V register_error_handler(NgaState *vm) { CELL ErrorID = stack_pop(vm); CELL ErrorHandler = stack_pop(vm); vm->ErrorHandlers[ErrorID] = ErrorHandler; printf("Assigned %lld to %lld\n", (long long)ErrorID, (long long)ErrorHandler); } V io_error(NgaState *vm) { switch (stack_pop(vm)) { case 0: register_error_handler(vm); break; default: break; } } V query_error(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_ERROR); } #endif #endif #ifdef ENABLE_BLOCKS /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ V read_block(NgaState *vm) { CELL buffer = stack_pop(vm); CELL block = stack_pop(vm); int32_t m[1024]; int fp = open(vm->BlockFile, O_RDONLY, 0666); lseek(fp, 4096 * block, SEEK_SET); read(fp, m, 4096); for (int i = 0; i < 1024; i++) { vm->memory[buffer + i] = (CELL)m[i]; } close(fp); } V write_block(NgaState *vm) { CELL buffer = stack_pop(vm); CELL block = stack_pop(vm); int32_t m[1024]; int fp = open(vm->BlockFile, O_WRONLY, 0666); lseek(fp, 4096 * block, SEEK_SET); for (int i = 0; i < 1024; i++) { m[i] = (int32_t)vm->memory[buffer + i]; } write(fp, m, 4096); close(fp); } V set_block_file(NgaState *vm) { CELL buffer = stack_pop(vm); strlcpy(vm->BlockFile, string_extract(vm, buffer), 1024); } V io_blocks(NgaState *vm) { switch (stack_pop(vm)) { case 0: read_block(vm); break; case 1: write_block(vm); break; case 2: set_block_file(vm); break; } } V query_blocks(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_BLOCKS); } #endif #ifdef ENABLE_FILES /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ V utf32_to_utf8(uint32_t, unsigned char*, int*); int fread_character(FILE *); /*--------------------------------------------------------------------- I keep an array of file handles. RETRO will use the index number as its representation of the file. ---------------------------------------------------------------------*/ /*--------------------------------------------------------------------- `files_get_handle()` returns a file handle, or 0 if there are no available handle slots in the array. ---------------------------------------------------------------------*/ CELL files_get_handle(NgaState *vm) { for(CELL i = 1; i < MAX_OPEN_FILES; i++) { if (vm->OpenFileHandles[i] == 0) { return i; } } return 0; } /*--------------------------------------------------------------------- `file_open()` opens a file. This pulls from the RETRO data stack: - mode (number, TOS) - filename (string, NOS) Modes are: | Mode | Corresponds To | Description | | ---- | -------------- | -------------------- | | 0 | rb | Open for reading | | 1 | w | Open for writing | | 2 | a | Open for append | | 3 | rb+ | Open for read/update | The file name should be a NULL terminated string. This will attempt to open the requested file and will return a handle (index number into the `OpenFileHandles` array). ---------------------------------------------------------------------*/ V file_open(NgaState *vm) { CELL slot = files_get_handle(vm); CELL mode = stack_pop(vm); CELL name = stack_pop(vm); char *modes[] = {"rb", "w", "a", "rb+"}; char *request = string_extract(vm, name); if (slot > 0) { vm->OpenFileHandles[slot] = fopen(request, modes[mode]); } if (vm->OpenFileHandles[slot] == NULL) { vm->OpenFileHandles[slot] = 0; slot = 0; } stack_push(vm, slot); // FILE *file = (slot > 0) ? fopen(request, modes[mode]) : NULL; // vm->OpenFileHandles[slot] = (file != NULL) ? file : 0; // stack_push(vm, slot); } /*--------------------------------------------------------------------- `file_read()` reads a byte from a file. This takes a file pointer from the stack and pushes the character that was read to the stack. ---------------------------------------------------------------------*/ V file_read(NgaState *vm) { CELL slot = stack_pop(vm); FILE *file = vm->OpenFileHandles[slot]; if (slot <= 0 || slot > MAX_OPEN_FILES || file == 0) { printf("\nERROR (nga/file_read): Invalid file handle\n"); exit(1); } stack_push(vm, feof(file) ? 0 : fgetc(file)); } /*-------------------------------------------------------------- `file_write()` writes a byte to a file. This takes a file pointer (TOS) and a byte (NOS) from the stack. It does not return any values on the stack. ------------------------------------------------------------*/ V file_write(NgaState *vm) { CELL slot = stack_pop(vm); FILE *file = vm->OpenFileHandles[slot]; if (slot <= 0 || slot > MAX_OPEN_FILES || file == 0) { printf("\nERROR (nga/file_write): Invalid file handle\n"); exit(1); } fputc(stack_pop(vm), file); } /*-------------------------------------------------------------- `file_close()` closes a file. This takes a file handle from the stack and does not return anything on the stack. ------------------------------------------------------------*/ V file_close(NgaState *vm) { CELL slot = stack_pop(vm); FILE *file = vm->OpenFileHandles[slot]; if (slot <= 0 || slot > MAX_OPEN_FILES || file == 0) { printf("\nERROR (nga/file_close): Invalid file handle\n"); exit(1); } fclose(file); vm->OpenFileHandles[slot] = 0; } /*-------------------------------------------------------------- `file_get_position()` provides the current index into a file. This takes the file handle from the stack and returns the offset. ------------------------------------------------------------*/ V file_get_position(NgaState *vm) { CELL slot = stack_pop(vm); if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_get_position): Invalid file handle\n"); exit(1); } stack_push(vm, (CELL) ftell(vm->OpenFileHandles[slot])); } /*-------------------------------------------------------------- `file_set_position()` changes the current index into a file to the specified one. This takes a file handle (TOS) and new offset (NOS) from the stack. ------------------------------------------------------------*/ V file_set_position(NgaState *vm) { CELL slot, pos; slot = stack_pop(vm); pos = stack_pop(vm); if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_set_position): Invalid file handle\n"); exit(1); } fseek(vm->OpenFileHandles[slot], pos, SEEK_SET); } /*-------------------------------------------------------------- `file_get_size()` returns the size of a file, or 0 if empty. If the file is a directory, it returns -1. It takes a file handle from the stack. ------------------------------------------------------------*/ V file_get_size(NgaState *vm) { CELL slot, current, r, size; struct stat buffer; slot = stack_pop(vm); if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_get_size): Invalid file handle\n"); exit(1); } fstat(fileno(vm->OpenFileHandles[slot]), &buffer); if (!S_ISDIR(buffer.st_mode)) { current = ftell(vm->OpenFileHandles[slot]); r = fseek(vm->OpenFileHandles[slot], 0, SEEK_END); size = ftell(vm->OpenFileHandles[slot]); fseek(vm->OpenFileHandles[slot], current, SEEK_SET); } else { r = -1; size = 0; } stack_push(vm, (r == 0) ? size : 0); } /*-------------------------------------------------------------- `file_delete()` removes a file. This takes a file name (as a string) from the stack. ------------------------------------------------------------*/ V file_delete(NgaState *vm) { char *request; CELL name = stack_pop(vm); request = string_extract(vm, name); unlink(request); } /*-------------------------------------------------------------- `file_flush()` flushes any pending writes to disk. This takes a file handle from the stack. ------------------------------------------------------------*/ V file_flush(NgaState *vm) { CELL slot; slot = stack_pop(vm); if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_flush): Invalid file handle\n"); exit(1); } fflush(vm->OpenFileHandles[slot]); } char file_bytes[32769]; V file_read_bytes(NgaState *vm) { CELL slot = stack_pop(vm); CELL size = stack_pop(vm); CELL dest = stack_pop(vm); CELL z = fread((char *)file_bytes, 1, size, vm->OpenFileHandles[slot]); for (CELL i = 0; i < size; i++) { CELL x = file_bytes[i]; vm->memory[dest + i] = x; } stack_push(vm, z); } V file_write_bytes(NgaState *vm) { CELL slot = stack_pop(vm); CELL size = stack_pop(vm); CELL src = stack_pop(vm); for (CELL i = 0; i < size; i++) { char x = vm->memory[src + i]; file_bytes[i] = x; } CELL z = fwrite(&file_bytes, 1, size, vm->OpenFileHandles[slot]); stack_push(vm, z); } V file_read_character(NgaState *vm) { CELL c; CELL slot = stack_pop(vm); if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_read): Invalid file handle\n"); exit(1); } c = fread_character(vm->OpenFileHandles[slot]); stack_push(vm, feof(vm->OpenFileHandles[slot]) ? 0 : c); } V file_write_character(NgaState *vm) { unsigned char utf8_bytes[4]; int num_bytes; CELL slot, c, r; utf32_to_utf8(stack_pop(vm), utf8_bytes, &num_bytes); slot = stack_pop(vm); if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_write): Invalid file handle\n"); exit(1); } r = fwrite(&utf8_bytes, num_bytes, 1, vm->OpenFileHandles[slot]); } V file_read_line(NgaState *vm) { CELL slot = stack_pop(vm); CELL targ = stack_pop(vm); CELL c; if (slot <= 0 || slot > MAX_OPEN_FILES || vm->OpenFileHandles[slot] == 0) { printf("\nERROR (nga/file_read): Invalid file handle\n"); exit(1); } c = fread_character(vm->OpenFileHandles[slot]); vm->memory[targ] = c; targ++; while (c != 10 && c != 13 && c != 0) { c = fread_character(vm->OpenFileHandles[slot]); vm->memory[targ] = c; targ++; } vm->memory[targ - 1] = 0; } V file_write_line(NgaState *vm) { } Handler FileActions[] = { file_open, file_close, file_read, file_write, file_get_position, file_set_position, file_get_size, file_delete, file_flush, file_read_bytes, file_write_bytes, file_read_character,file_write_character, file_read_line, file_write_line, }; V query_filesystem(NgaState *vm) { stack_push(vm, 3); stack_push(vm, DEVICE_FILES); } V io_filesystem(NgaState *vm) { FileActions[stack_pop(vm)](vm); } #endif #ifdef ENABLE_MULTICORE /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ /* Multi Core Support ------------------------------------------------ */ #ifdef ENABLE_MULTICORE void init_core(NgaState *vm, CELL x) { int y; vm->cpu[x].sp = 0; vm->cpu[x].rp = 0; vm->cpu[x].ip = 0; vm->cpu[x].active = 0; vm->cpu[x].u = 0; for (y = 0; y < STACK_DEPTH; y++) { vm->cpu[x].data[y] = 0; }; for (y = 0; y < ADDRESSES; y++) { vm->cpu[x].address[y] = 0; }; for (y = 0; y < 24; y++) { vm->cpu[x].registers[y] = 0; }; } void start_core(NgaState *vm, CELL x, CELL ip) { vm->cpu[x].ip = ip; vm->cpu[x].rp = 1; vm->cpu[x].active = -1; } void pause_core(NgaState *vm, CELL x) { vm->cpu[x].active = 0; } void resume_core(NgaState *vm, CELL x) { vm->cpu[x].active = -1; } void switch_core(NgaState *vm) { vm->active += 1; if (vm->active >= CORES) { vm->active = 0; } if (!vm->cpu[vm->active].active) { switch_core(vm); } } void io_multicore(NgaState *vm) { int x, y, z; x = stack_pop(vm); switch(x) { case 0: y = stack_pop(vm); init_core(vm, y); break; case 1: y = stack_pop(vm); z = stack_pop(vm); start_core(vm, y, z); break; case 2: y = stack_pop(vm); pause_core(vm, y); break; case 3: pause_core(vm, vm->active); break; case 4: y = stack_pop(vm); resume_core(vm, y); break; case 5: y = stack_pop(vm); stack_push(vm, vm->cpu[vm->active].registers[y]); break; case 6: y = stack_pop(vm); z = stack_pop(vm); vm->cpu[vm->active].registers[y] = z; break; } } void query_multicore(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_MULTICORE); } #endif #endif #ifdef ENABLE_FFI /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_FFI #include typedef void (*External)(void *); V *handles[32]; External funcs[32000]; int nlibs, nffi; V open_library(NgaState *vm) { handles[nlibs] = dlopen(string_extract(vm, stack_pop(vm)), RTLD_LAZY); stack_push(vm, nlibs); nlibs++; } V map_symbol(NgaState *vm) { int h; h = stack_pop(vm); char *s = string_extract(vm, stack_pop(vm)); funcs[nffi] = dlsym(handles[h], s); stack_push(vm, nffi); nffi++; } V invoke(NgaState *vm) { funcs[stack_pop(vm)](vm); } V io_ffi(NgaState *vm) { switch (stack_pop(vm)) { case 0: open_library(vm); break; case 1: map_symbol(vm); break; case 2: invoke(vm); break; } } V query_ffi(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_FFI); } #endif #endif #ifdef ENABLE_FLOATS /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_FLOATS #include /* Floating Point ---------------------------------------------------- */ void float_guard(NgaState *vm) { if (vm->fsp < 0 || vm->fsp > 255) { printf("\nERROR (nga/float_guard): Float Stack Limits Exceeded!\n"); printf("At %lld, fsp = %lld\n", (long long)vm->cpu[vm->active].ip, (long long)vm->fsp); exit(1); } if (vm->afsp < 0 || vm->afsp > 255) { printf("\nERROR (nga/float_guard): Alternate Float Stack Limits Exceeded!\n"); printf("At %lld, afsp = %lld\n", (long long)vm->cpu[vm->active].ip, (long long)vm->afsp); exit(1); } } /*--------------------------------------------------------------------- The first two functions push a float to the stack and pop a value off the stack. ---------------------------------------------------------------------*/ void float_push(NgaState *vm, double value) { vm->fsp++; float_guard(vm); vm->Floats[vm->fsp] = value; } double float_pop(NgaState *vm) { vm->fsp--; float_guard(vm); return vm->Floats[vm->fsp + 1]; } void float_to_alt(NgaState *vm) { vm->afsp++; float_guard(vm); vm->AFloats[vm->afsp] = float_pop(vm); } void float_from_alt(NgaState *vm) { float_push(vm, vm->AFloats[vm->afsp]); vm->afsp--; float_guard(vm); } /*--------------------------------------------------------------------- RETRO operates on 32-bit signed integer values. This function just pops a number from the data stack, casts it to a float, and pushes it to the float stack. ---------------------------------------------------------------------*/ void float_from_number(NgaState *vm) { float_push(vm, (double)stack_pop(vm)); } /*--------------------------------------------------------------------- To get a float from a string in the image, I provide this function. I cheat: using `atof()` takes care of the details, so I don't have to. ---------------------------------------------------------------------*/ void float_from_string(NgaState *vm) { float_push(vm, atof(string_extract(vm, stack_pop(vm)))); } /*--------------------------------------------------------------------- Converting a floating point into a string is slightly more work. Here I pass it off to `snprintf()` to deal with. ---------------------------------------------------------------------*/ void float_to_string(NgaState *vm) { snprintf(vm->string_data, 8192, "%f", float_pop(vm)); string_inject(vm, vm->string_data, stack_pop(vm)); } /*--------------------------------------------------------------------- Converting a floating point back into a standard number requires a little care due to the signed nature. This makes adjustments for the max & min value, and then casts (rounding) the float back to a normal number. ---------------------------------------------------------------------*/ void float_to_number(NgaState *vm) { double a = float_pop(vm); if (a > 2147483647) a = 2147483647; if (a < -2147483648) a = -2147483648; stack_push(vm, (CELL)round(a)); } void float_add(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, a+b); } void float_sub(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, b-a); } void float_mul(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, a*b); } void float_div(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, b/a); } void float_floor(NgaState *vm) { float_push(vm, floor(float_pop(vm))); } void float_ceil(NgaState *vm) { float_push(vm, ceil(float_pop(vm))); } void float_eq(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); if (a == b) stack_push(vm, -1); else stack_push(vm, 0); } void float_neq(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); if (a != b) stack_push(vm, -1); else stack_push(vm, 0); } void float_lt(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); if (b < a) stack_push(vm, -1); else stack_push(vm, 0); } void float_gt(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); if (b > a) stack_push(vm, -1); else stack_push(vm, 0); } void float_depth(NgaState *vm) { stack_push(vm, vm->fsp); } void float_adepth(NgaState *vm) { stack_push(vm, vm->afsp); } void float_dup(NgaState *vm) { double a = float_pop(vm); float_push(vm, a); float_push(vm, a); } void float_drop(NgaState *vm) { float_pop(vm); } void float_swap(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, a); float_push(vm, b); } void float_log(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, log(b) / log(a)); } void float_sqrt(NgaState *vm) { float_push(vm, sqrt(float_pop(vm))); } void float_pow(NgaState *vm) { double a = float_pop(vm); double b = float_pop(vm); float_push(vm, pow(b, a)); } void float_sin(NgaState *vm) { float_push(vm, sin(float_pop(vm))); } void float_cos(NgaState *vm) { float_push(vm, cos(float_pop(vm))); } void float_tan(NgaState *vm) { float_push(vm, tan(float_pop(vm))); } void float_asin(NgaState *vm) { float_push(vm, asin(float_pop(vm))); } void float_acos(NgaState *vm) { float_push(vm, acos(float_pop(vm))); } void float_atan(NgaState *vm) { float_push(vm, atan(float_pop(vm))); } /*--------------------------------------------------------------------- With this finally done, I implement the FPU instructions. ---------------------------------------------------------------------*/ Handler FloatHandlers[] = { float_from_number, float_from_string, float_to_number, float_to_string, float_add, float_sub, float_mul, float_div, float_floor, float_ceil, float_sqrt, float_eq, float_neq, float_lt, float_gt, float_depth, float_dup, float_drop, float_swap, float_log, float_pow, float_sin, float_tan, float_cos, float_asin, float_acos, float_atan, float_to_alt, float_from_alt, float_adepth, }; void query_floatingpoint(NgaState *vm) { stack_push(vm, 1); stack_push(vm, DEVICE_FLOATS); } void io_floatingpoint(NgaState *vm) { FloatHandlers[stack_pop(vm)](vm); } #endif #endif #ifdef ENABLE_CLOCK /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_CLOCK time_t current_time; V clock_time(NgaState *vm) { stack_push(vm, (CELL)time(NULL)); } V clock_day(NgaState *vm) { stack_push(vm, (CELL)localtime(¤t_time)->tm_mday); } V clock_month(NgaState *vm) { stack_push(vm, (CELL)localtime(¤t_time)->tm_mon + 1); } V clock_year(NgaState *vm) { stack_push(vm, (CELL)localtime(¤t_time)->tm_year + 1900); } V clock_hour(NgaState *vm) { stack_push(vm, (CELL)localtime(¤t_time)->tm_hour); } V clock_minute(NgaState *vm) { stack_push(vm, (CELL)localtime(¤t_time)->tm_min); } V clock_second(NgaState *vm) { stack_push(vm, (CELL)localtime(¤t_time)->tm_sec); } V clock_day_utc(NgaState *vm) { stack_push(vm, (CELL)gmtime(¤t_time)->tm_mday); } V clock_month_utc(NgaState *vm) { stack_push(vm, (CELL)gmtime(¤t_time)->tm_mon + 1); } V clock_year_utc(NgaState *vm) { stack_push(vm, (CELL)gmtime(¤t_time)->tm_year + 1900); } V clock_hour_utc(NgaState *vm) { stack_push(vm, (CELL)gmtime(¤t_time)->tm_hour); } V clock_minute_utc(NgaState *vm) { stack_push(vm, (CELL)gmtime(¤t_time)->tm_min); } V clock_second_utc(NgaState *vm) { stack_push(vm, (CELL)gmtime(¤t_time)->tm_sec); } Handler ClockActions[] = { clock_time, clock_day, clock_month, clock_year, clock_hour, clock_minute, clock_second, clock_day_utc, clock_month_utc, clock_year_utc, clock_hour_utc, clock_minute_utc, clock_second_utc }; V query_clock(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_CLOCK); } V io_clock(NgaState *vm) { current_time = time(NULL); ClockActions[stack_pop(vm)](vm); } #endif #endif #ifdef ENABLE_RNG /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_RNG V io_rng(NgaState *vm) { int64_t r = 0; char buffer[8]; int i; ssize_t ignore; int fd = open("/dev/urandom", O_RDONLY); ignore = read(fd, buffer, 8); close(fd); for(i = 0; i < 8; ++i) { r = r << 8; r += ((int64_t)buffer[i] & 0xFF); } #ifndef BIT64 stack_push(vm, (CELL)abs((CELL)r)); #else stack_push(vm, (CELL)llabs((CELL)r)); #endif } V query_rng(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_RNG); } #endif #endif #ifdef ENABLE_SOCKETS /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_SOCKETS #include #include #include #include /*--------------------------------------------------------------------- BSD Sockets ---------------------------------------------------------------------*/ int SocketID[16]; struct sockaddr_in Sockets[16]; struct addrinfo hints, *res; V socket_getaddrinfo(NgaState *vm) { char host[1025], port[6]; strlcpy(port, string_extract(vm, stack_pop(vm)), 5); strlcpy(host, string_extract(vm, stack_pop(vm)), 1024); getaddrinfo(host, port, &hints, &res); } V socket_get_host(NgaState *vm) { struct hostent *hp; struct in_addr **addr_list; hp = gethostbyname(string_extract(vm, stack_pop(vm))); if (hp == NULL) { vm->memory[stack_pop(vm)] = 0; return; } addr_list = (struct in_addr **)hp->h_addr_list; string_inject(vm, inet_ntoa(*addr_list[0]), stack_pop(vm)); } V socket_create(NgaState *vm) { int i; int sock = socket(PF_INET, SOCK_STREAM, 0); for (i = 0; i < 16; i++) { if (SocketID[i] == 0 && sock != 0) { SocketID[i] = sock; stack_push(vm, (CELL)i); sock = 0; } } } V socket_bind(NgaState *vm) { int sock, port; memset(&hints, 0, sizeof hints); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; sock = stack_pop(vm); port = stack_pop(vm); getaddrinfo(NULL, string_extract(vm, port), &hints, &res); stack_push(vm, (CELL) bind(SocketID[sock], res->ai_addr, res->ai_addrlen)); stack_push(vm, errno); } V socket_listen(NgaState *vm) { int sock = stack_pop(vm); int backlog = stack_pop(vm); stack_push(vm, listen(SocketID[sock], backlog)); stack_push(vm, errno); } V socket_accept(NgaState *vm) { int i; int sock = stack_pop(vm); struct sockaddr_storage their_addr; socklen_t addr_size = sizeof their_addr; int new_fd = accept(SocketID[sock], (struct sockaddr *)&their_addr, &addr_size); for (i = 0; i < 16; i++) { if (SocketID[i] == 0 && new_fd != 0) { SocketID[i] = new_fd; stack_push(vm, (CELL)i); new_fd = 0; } } stack_push(vm, errno); } V socket_connect(NgaState *vm) { stack_push(vm, (CELL)connect(SocketID[stack_pop(vm)], res->ai_addr, res->ai_addrlen)); stack_push(vm, errno); } V socket_send(NgaState *vm) { int sock = stack_pop(vm); char *buf = string_extract(vm, stack_pop(vm)); stack_push(vm, send(SocketID[sock], buf, strlen(buf), 0)); stack_push(vm, errno); } V socket_recv(NgaState *vm) { char buf[8193]; int sock = stack_pop(vm); int limit = stack_pop(vm); int dest = stack_pop(vm); int len = recv(SocketID[sock], buf, limit, 0); if (len > 0) buf[len] = '\0'; if (len > 0) string_inject(vm, buf, dest); stack_push(vm, len); stack_push(vm, errno); } V socket_close(NgaState *vm) { int sock = stack_pop(vm); close(SocketID[sock]); SocketID[sock] = 0; } Handler SocketActions[] = { socket_get_host, socket_create, socket_bind, socket_listen, socket_accept, socket_connect, socket_send, socket_recv, socket_close, socket_getaddrinfo }; V io_socket(NgaState *vm) { SocketActions[stack_pop(vm)](vm); } V query_socket(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_SOCKETS); } #endif #endif #ifdef ENABLE_UNIX /************************************************************** _ __ _ _ _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ | | | __/ |_| | | (_) | _| (_) | | | |_| | | | |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| for nga (c) Charles Childers, Luke Parrish, Marc Simpsonn, Jay Skeer, Kenneth Keating **************************************************************/ #ifdef ENABLE_UNIX #include #include /*-------------------------------------------------------------- `unix_open_pipe()` is like `file_open()`, but for pipes. This pulls from the data stack: - mode (number, TOS) - executable (string, NOS) Modes are: | Mode | Corresponds To | Description | | ---- | -------------- | -------------------- | | 0 | r | Open for reading | | 1 | w | Open for writing | | 3 | r+ | Open for read/update | The file name should be a NULL terminated string. This will attempt to open the requested file and will return a handle (index number into the `OpenFileHandles` array). Once opened, you can use the standard file words to read/write to the process. ------------------------------------------------------------*/ V unix_open_pipe(NgaState *vm) { CELL slot, mode, name; char *request; const char *modes[] = {"r", "w", "", "r+"}; slot = files_get_handle(vm); mode = stack_pop(vm); name = stack_pop(vm); request = string_extract(vm, name); if (slot > 0) { vm->OpenFileHandles[slot] = popen(request, modes[mode]); } if (vm->OpenFileHandles[slot] == NULL) { vm->OpenFileHandles[slot] = 0; slot = 0; } stack_push(vm, slot); } V unix_close_pipe(NgaState *vm) { pclose(vm->OpenFileHandles[TOS]); vm->OpenFileHandles[TOS] = 0; stack_pop(vm); } V unix_system(NgaState *vm) { int ignore = 0; ignore = system(string_extract(vm, stack_pop(vm))); } V unix_fork(NgaState *vm) { stack_push(vm, fork()); } V unix_run_external(NgaState *vm) { char *line, *args[128]; int i, status; pid_t pid; char **argv = args; line = string_extract(vm, stack_pop(vm)); for(i = 0; i < 128; i++) args[i] = 0; while (*line != '\0') { while (*line == ' ' || *line == '\t' || *line == '\n') *line++ = '\0'; *argv++ = line; while (*line != '\0' && *line != ' ' && *line != '\t' && *line != '\n') line++; } if ((pid = fork()) < 0) { printf("*** ERROR: forking child process failed\n"); exit(1); } else if (pid == 0) { int e = execvp(*args, args); if (e < 0) { printf("*** ERROR: exec failed with %d\n", e); exit(1); } } else { while (wait(&status) != pid) ; } } /*-------------------------------------------------------------- UNIX provides `execl` to execute a file, with various forms for arguments provided. Retro wraps this in several functions, one for each number of passed arguments. See the Glossary for details on what each takes from the stack. Each of these will return the error code if the execution fails. ------------------------------------------------------------*/ V unix_exec0(NgaState *vm) { char path[1025]; strlcpy(path, string_extract(vm, stack_pop(vm)), 1024); execl(path, path, (char *)0); stack_push(vm, errno); } V unix_exec1(NgaState *vm) { char path[1025]; char arg0[1025]; strlcpy(arg0, string_extract(vm, stack_pop(vm)), 1024); strlcpy(path, string_extract(vm, stack_pop(vm)), 1024); execl(path, path, arg0, (char *)0); stack_push(vm, errno); } V unix_exec2(NgaState *vm) { char path[1025]; char arg0[1025], arg1[1025]; strlcpy(arg1, string_extract(vm, stack_pop(vm)), 1024); strlcpy(arg0, string_extract(vm, stack_pop(vm)), 1024); strlcpy(path, string_extract(vm, stack_pop(vm)), 1024); execl(path, path, arg0, arg1, (char *)0); stack_push(vm, errno); } V unix_exec3(NgaState *vm) { char path[1025]; char arg0[1025], arg1[1025], arg2[1025]; strlcpy(arg2, string_extract(vm, stack_pop(vm)), 1024); strlcpy(arg1, string_extract(vm, stack_pop(vm)), 1024); strlcpy(arg0, string_extract(vm, stack_pop(vm)), 1024); strlcpy(path, string_extract(vm, stack_pop(vm)), 1024); execl(path, path, arg0, arg1, arg2, (char *)0); stack_push(vm, errno); } V unix_exit(NgaState *vm) { exit(stack_pop(vm)); } V unix_getpid(NgaState *vm) { stack_push(vm, getpid()); } V unix_wait(NgaState *vm) { int a; stack_push(vm, wait(&a)); } V unix_kill(NgaState *vm) { CELL a = stack_pop(vm); kill(stack_pop(vm), a); } V unix_write(NgaState *vm) { ssize_t ignore; CELL c = stack_pop(vm); CELL b = stack_pop(vm); CELL a = stack_pop(vm); ignore = write(fileno(vm->OpenFileHandles[c]), string_extract(vm, a), b); } V unix_chdir(NgaState *vm) { int ignore = chdir(string_extract(vm, stack_pop(vm))); } V unix_getenv(NgaState *vm) { CELL a = stack_pop(vm); CELL b = stack_pop(vm); string_inject(vm, getenv(string_extract(vm, b)), a); } V unix_putenv(NgaState *vm) { putenv(string_extract(vm, stack_pop(vm))); } V unix_sleep(NgaState *vm) { sleep(stack_pop(vm)); } Handler UnixActions[] = { unix_system, unix_fork, unix_exec0, unix_exec1, unix_exec2, unix_exec3, unix_exit, unix_getpid, unix_wait, unix_kill, unix_open_pipe, unix_close_pipe, unix_write, unix_chdir, unix_getenv, unix_putenv, unix_sleep, unix_run_external }; V query_unix(NgaState *vm) { stack_push(vm, 3); stack_push(vm, DEVICE_UNIX); } V io_unix(NgaState *vm) { UnixActions[stack_pop(vm)](vm); } #endif #endif /*--------------------------------------------------------------------- Now on to I/O and extensions! ---------------------------------------------------------------------*/ V display_utf8(const unsigned char* utf8_bytes, int num_bytes) { if (write(STDOUT_FILENO, utf8_bytes, num_bytes) == -1) { perror("Error writing to /dev/stdout"); } } V utf32_to_utf8(uint32_t utf32_char, unsigned char* utf8_bytes, int* num_bytes) { if (utf32_char < 0x80) { utf8_bytes[0] = (unsigned char)utf32_char; *num_bytes = 1; } else if (utf32_char < 0x800) { utf8_bytes[0] = (unsigned char)(0xC0 | (utf32_char >> 6)); utf8_bytes[1] = (unsigned char)(0x80 | (utf32_char & 0x3F)); *num_bytes = 2; } else if (utf32_char < 0x10000) { utf8_bytes[0] = (unsigned char)(0xE0 | (utf32_char >> 12)); utf8_bytes[1] = (unsigned char)(0x80 | ((utf32_char >> 6) & 0x3F)); utf8_bytes[2] = (unsigned char)(0x80 | (utf32_char & 0x3F)); *num_bytes = 3; } else if (utf32_char < 0x110000) { utf8_bytes[0] = (unsigned char)(0xF0 | (utf32_char >> 18)); utf8_bytes[1] = (unsigned char)(0x80 | ((utf32_char >> 12) & 0x3F)); utf8_bytes[2] = (unsigned char)(0x80 | ((utf32_char >> 6) & 0x3F)); utf8_bytes[3] = (unsigned char)(0x80 | (utf32_char & 0x3F)); *num_bytes = 4; } else { *num_bytes = 0; } } V io_output(NgaState *vm) { unsigned char utf8_bytes[4]; int num_bytes; utf32_to_utf8(stack_pop(vm), utf8_bytes, &num_bytes); display_utf8(utf8_bytes, num_bytes); fflush(stdout); } V query_output(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_OUTPUT); } /*=====================================================================*/ int read_character(int from) { unsigned char utf8_bytes[4] = { 0 }; int utf32_char, i, num_bytes; if (read(from, &utf8_bytes[0], 1) != 1) { return 0; } if ((utf8_bytes[0] & 0x80) == 0x00) { num_bytes = 1; } else if ((utf8_bytes[0] & 0xE0) == 0xC0) { num_bytes = 2; } else if ((utf8_bytes[0] & 0xF0) == 0xE0) { num_bytes = 3; } else if ((utf8_bytes[0] & 0xF8) == 0xF0) { num_bytes = 4; } else { return 0; } for (i = 1; i < num_bytes; i++) { if (read(from, &utf8_bytes[i], 1) != 1) { return 0; } } if (num_bytes == 1) { utf32_char = utf8_bytes[0]; } else if (num_bytes == 2) { utf32_char = ((uint32_t)(utf8_bytes[0] & 0x1F) << 6) | (utf8_bytes[1] & 0x3F); } else if (num_bytes == 3) { utf32_char = ((uint32_t)(utf8_bytes[0] & 0x0F) << 12) | ((uint32_t)(utf8_bytes[1] & 0x3F) << 6) | (utf8_bytes[2] & 0x3F); } else if (num_bytes == 4) { utf32_char = ((uint32_t)(utf8_bytes[0] & 0x07) << 18) | ((uint32_t)(utf8_bytes[1] & 0x3F) << 12) | ((uint32_t)(utf8_bytes[2] & 0x3F) << 6) | (utf8_bytes[3] & 0x3F); } else { return 0; } return utf32_char; } int fread_character(FILE *from) { unsigned char utf8_bytes[4] = { 0 }; int utf32_char, i, num_bytes; if (fread(&utf8_bytes[0], 1, 1, from) != 1) { return 0; } if ((utf8_bytes[0] & 0x80) == 0x00) { num_bytes = 1; } else if ((utf8_bytes[0] & 0xE0) == 0xC0) { num_bytes = 2; } else if ((utf8_bytes[0] & 0xF0) == 0xE0) { num_bytes = 3; } else if ((utf8_bytes[0] & 0xF8) == 0xF0) { num_bytes = 4; } else { return 0; } for (i = 1; i < num_bytes; i++) { if (fread(&utf8_bytes[i], 1, 1, from) != 1) { return 0; } } if (num_bytes == 1) { utf32_char = utf8_bytes[0]; } else if (num_bytes == 2) { utf32_char = ((uint32_t)(utf8_bytes[0] & 0x1F) << 6) | (utf8_bytes[1] & 0x3F); } else if (num_bytes == 3) { utf32_char = ((uint32_t)(utf8_bytes[0] & 0x0F) << 12) | ((uint32_t)(utf8_bytes[1] & 0x3F) << 6) | (utf8_bytes[2] & 0x3F); } else if (num_bytes == 4) { utf32_char = ((uint32_t)(utf8_bytes[0] & 0x07) << 18) | ((uint32_t)(utf8_bytes[1] & 0x3F) << 12) | ((uint32_t)(utf8_bytes[2] & 0x3F) << 6) | (utf8_bytes[3] & 0x3F); } else { return 0; } return utf32_char; } V io_keyboard(NgaState *vm) { stack_push(vm, read_character(STDIN_FILENO)); if (TOS == 127) TOS = 8; } V query_keyboard(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_KEYBOARD); } /*=====================================================================*/ #ifdef ENABLE_UNSIGNED V io_unsigned(NgaState *vm) { int x, y, z; long c; switch (stack_pop(vm)) { case 0: ACTIVE.u = 1; break; case 1: c = 0; z = stack_pop(vm); y = stack_pop(vm); x = stack_pop(vm); if (ACTIVE.u != 0) { c = (unsigned)x * (unsigned)y; stack_push(vm, (unsigned)c % (unsigned)z); stack_push(vm, (unsigned)c / (unsigned)z); } else { c = x * y; stack_push(vm, c % z); stack_push(vm, c / z); } ACTIVE.u = 0; break; } } V query_unsigned(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_UNSIGNED); } #endif /*=====================================================================*/ V io_image(NgaState *vm) { FILE *fp; char *f = string_extract(vm, stack_pop(vm)); if ((fp = fopen(f, "wb")) == NULL) { printf("\nERROR (nga/io_image): Unable to save the image: %s!\n", f); exit(2); } fwrite(vm->memory, sizeof(CELL), vm->memory[3] + 1, fp); fclose(fp); } V query_image(NgaState *vm) { stack_push(vm, 0); stack_push(vm, DEVICE_IMAGE); } /*=====================================================================*/ /*--------------------------------------------------------------------- Scripting Support ---------------------------------------------------------------------*/ V scripting_arg(NgaState *vm) { CELL a, b; a = stack_pop(vm); b = stack_pop(vm); stack_push(vm, string_inject(vm, vm->sys_argv[a + 2], b)); } V scripting_arg_count(NgaState *vm) { if ((vm->sys_argc - 2) <= 0) stack_push(vm, 0); else stack_push(vm, vm->sys_argc - 2); } V scripting_include(NgaState *vm) { include_file(vm, string_extract(vm, stack_pop(vm)), 0); } V scripting_include_plain(NgaState *vm) { include_plain_file(vm, string_extract(vm, stack_pop(vm)), 0); } V scripting_name(NgaState *vm) { if (vm->sys_argc == 1) stack_push(vm, string_inject(vm, "", stack_pop(vm))); else stack_push(vm, string_inject(vm, vm->sys_argv[1], stack_pop(vm))); } /* addeded in scripting i/o device, revision 1 */ V scripting_source(NgaState *vm) { stack_push(vm, string_inject(vm, vm->scripting_sources[vm->current_source], stack_pop(vm))); } V scripting_line(NgaState *vm) { stack_push(vm, vm->currentLine); } V scripting_ignore_to_eol(NgaState *vm) { vm->ignoreToEOL = -1; } V scripting_ignore_to_eof(NgaState *vm) { vm->ignoreToEOF = -1; } V scripting_abort(NgaState *vm) { scripting_ignore_to_eol(vm); scripting_ignore_to_eof(vm); vm->perform_abort = -1; } V carry_out_abort(NgaState *vm) { ACTIVE.ip = IMAGE_SIZE + 1; ACTIVE.rp = 0; ACTIVE.sp = 0; #ifdef ENABLE_FLOATS vm->fsp = 0; vm->afsp = 0; #endif if (vm->current_source > 0) { scripting_abort(vm); return; } vm->perform_abort = 0; vm->current_source = 0; } V scripting_line_text(NgaState *vm) { CELL target = stack_pop(vm); string_inject(vm, vm->line, target); } Handler ScriptingActions[] = { scripting_arg_count, scripting_arg, scripting_include, scripting_name, scripting_source, scripting_line, scripting_ignore_to_eol, scripting_ignore_to_eof, scripting_abort, scripting_line_text, scripting_include_plain }; V query_scripting(NgaState *vm) { stack_push(vm, 3); stack_push(vm, DEVICE_SCRIPTING); } V io_scripting(NgaState *vm) { ScriptingActions[stack_pop(vm)](vm); } /*=====================================================================*/ /*--------------------------------------------------------------------- With these out of the way, I implement `execute`, which takes an address and runs the code at it. This has a couple of interesting bits. This will also exit if the address stack depth is zero (meaning that the word being run, and it's dependencies) are finished. ---------------------------------------------------------------------*/ V invalid_opcode(NgaState *vm, CELL opcode) { CELL a, i; printf("\nERROR (nga/execute): Invalid instruction!\n"); printf("At %lld, opcode %lld\n", (long long)ACTIVE.ip, (long long)opcode); printf("Instructions: "); a = opcode; for (i = 0; i < 4; i++) { printf("%lldd ", (long long)a & 0xFF); a = a >> 8; } printf("\n"); exit(1); } V execute(NgaState *vm, CELL cell) { CELL opcode; if (ACTIVE.rp == 0) ACTIVE.rp = 1; ACTIVE.ip = cell; while (ACTIVE.ip < IMAGE_SIZE) { if (vm->perform_abort == 0) { opcode = vm->memory[ACTIVE.ip]; #ifndef BRANCH_PREDICTION validate_opcode_bundle(vm, opcode); #endif process_opcode_bundle(vm, opcode); #ifndef ENABLE_ERROR if (ACTIVE.sp < 0 || ACTIVE.sp > STACK_DEPTH) { printf("\nERROR (nga/execute): Stack Limits Exceeded!\n"); printf("At %lld, opcode %lld. sp = %lld, core = %lld\n", (long long)ACTIVE.ip, (long long)opcode, (long long)ACTIVE.sp, (long long)vm->active); exit(1); } if (ACTIVE.rp < 0 || ACTIVE.rp > ADDRESSES) { printf("\nERROR (nga/execute): Address Stack Limits Exceeded!\n"); printf("At %lld, opcode %lld. rp = %lld\n", (long long)ACTIVE.ip, (long long)opcode, (long long)ACTIVE.rp); exit(1); } #endif ACTIVE.ip++; #ifdef ENABLE_MULTICORE switch_core(vm); #endif if (ACTIVE.rp == 0) ACTIVE.ip = IMAGE_SIZE; } else { carry_out_abort(vm); } } } ; /*--------------------------------------------------------------------- RETRO's `interpret` word expects a token on the stack. This next function copies a token to the `TIB` (text input buffer) and then calls `interpret` to process it. ---------------------------------------------------------------------*/ V evaluate(NgaState *vm, char *s) { if (strlen(s) == 0) return; if (strlen(s) > (TIB_END - TIB)) { s[TIB_END - TIB] = 0; } string_inject(vm, s, TIB); stack_push(vm, TIB); execute(vm, vm->interpret); } /*--------------------------------------------------------------------- `read_token` reads a token from the specified file. It will stop on a whitespace or newline. It also tries to handle backspaces, though the success of this depends on how your terminal is configured. ---------------------------------------------------------------------*/ int not_eol(int c) { return (c != 9) && (c != 10) && (c != 13) && (c != 32) && (c != EOF) && (c != 0); } V read_token(FILE *file, char *token_buffer) { int ch = fread_character(file); int count = 0; while (not_eol(ch)) { if ((ch == 8 || ch == 127) && count > 0) { count--; } else { token_buffer[count++] = ch; } ch = fread_character(file); } token_buffer[count] = '\0'; } V skip_indent(FILE *fp) { int ch = getc(fp); while (ch == ' ') { ch = getc(fp); } ungetc(ch, fp); } /*--------------------------------------------------------------------- Display the Stack Contents ---------------------------------------------------------------------*/ V dump_stack(NgaState *vm) { if (ACTIVE.sp == 0) return; printf("\nStack: "); for (CELL i = 1; i <= ACTIVE.sp; i++) { if (i == ACTIVE.sp) printf("[ TOS: %lld ]", (long long)ACTIVE.data[i]); else printf("%lld ", (long long)ACTIVE.data[i]); } printf("\n"); } V dump_astack(NgaState *vm) { if (ACTIVE.rp == 0) return; printf("\nAddress Stack: "); for (CELL i = 1; i <= ACTIVE.rp; i++) { if (i == ACTIVE.rp) printf("[ TOS: %lld ]", (long long)ACTIVE.address[i]); else printf("%lld ", (long long)ACTIVE.address[i]); } printf("\n"); } /*--------------------------------------------------------------------- RRE is primarily intended to be used in a batch or scripting model. The `include_file()` function will be used to read the code in the file, evaluating it as encountered. I enforce a literate model, with code in fenced blocks. E.g., # This is a test Display "Hello, World!" ~~~ 'Hello,_World! puts nl ~~~ RRE will ignore anything outside the `~~~` blocks. To identify if the current token is the start or end of a block, I provide a `fenced()` function. ---------------------------------------------------------------------*/ /* Check to see if a line is a fence boundary. This will check code blocks in all cases, and test blocks if tests_enabled is set to a non-zero value. */ int fence_boundary(NgaState *vm, char *buffer, int tests_enabled) { int flag = 1; if (strcmp(buffer, vm->code_start) == 0) { flag = -1; } if (strcmp(buffer, vm->code_end) == 0) { flag = -1; } if (strcmp(buffer, vm->test_start) == 0) { if (vm->codeBlocks == 0) { vm->codeBlocks++; } } if (tests_enabled == 0) { return flag; } if (strcmp(buffer, vm->test_start) == 0) { flag = -1; } if (strcmp(buffer, vm->test_end) == 0) { flag = -1; } return flag; } /*--------------------------------------------------------------------- And now for the actual `include_file()` function. ---------------------------------------------------------------------*/ V read_line(NgaState *vm, FILE *file, char *token_buffer) { int ch = getc(file); int count = 0; token_buffer[0] = '\0'; while ((ch != 10) && (ch != 13) && (ch != EOF) && (ch != 0)) { token_buffer[count++] = ch; ch = fread_character(file); } token_buffer[count] = '\0'; } int count_tokens(char *line) { int count = 1; while (*line++) { if (isspace(line[0])) count++; } return count; } V include_file(NgaState *vm, char *fname, int run_tests) { int inBlock = 0; /* Tracks status of in/out of block */ int priorBlocks = 0; char source[64 * 1024]; /* Token buffer [about 64K] */ char fence[33]; /* Used with `fence_boundary()` */ CELL ReturnStack[ADDRESSES]; CELL arp, aip; long offset = 0; CELL at = 0; int tokens = 0; FILE *fp; /* Open the file. If not found, */ fp = fopen(fname, "r"); /* exit. */ if (fp == NULL) { printf("File `%s` not found. Exiting.\n", fname); exit(1); } priorBlocks = vm->codeBlocks; vm->codeBlocks = 0; arp = ACTIVE.rp; aip = ACTIVE.ip; for(ACTIVE.rp = 0; ACTIVE.rp <= arp; ACTIVE.rp++) ReturnStack[ACTIVE.rp] = ACTIVE.address[ACTIVE.rp]; ACTIVE.rp = 0; vm->current_source++; strlcpy(vm->scripting_sources[vm->current_source], fname, 8192); vm->ignoreToEOF = 0; while (!feof(fp) && (vm->ignoreToEOF == 0)) { /* Loop through the file */ vm->ignoreToEOL = 0; offset = ftell(fp); read_line(vm, fp, vm->line); at++; fseek(fp, offset, SEEK_SET); skip_indent(fp); tokens = count_tokens(vm->line); while (tokens > 0 && vm->ignoreToEOL == 0) { tokens--; read_token(fp, source); strlcpy(fence, source, 32); /* Copy the first three characters */ if (fence_boundary(vm, fence, run_tests) == -1) { if (inBlock == 0) { inBlock = 1; vm->codeBlocks++; } else { inBlock = 0; } } else { if (inBlock == 1) { vm->currentLine = at; evaluate(vm, source); vm->currentLine = at; } } } if (vm->ignoreToEOL == -1) { read_line(vm, fp, vm->line); } } vm->current_source--; vm->ignoreToEOF = 0; fclose(fp); if (vm->perform_abort == -1) { carry_out_abort(vm); } for(ACTIVE.rp = 0; ACTIVE.rp <= arp; ACTIVE.rp++) ACTIVE.address[ACTIVE.rp] = ReturnStack[ACTIVE.rp]; ACTIVE.rp = arp; ACTIVE.ip = aip; if (vm->codeBlocks == 0) { printf("warning: no code or test blocks found!\n"); printf(" filename: %s\n", fname); printf(" see http://unu.retroforth.org for a brief summary of\n"); printf(" the unu code format used by retro\n"); } vm->codeBlocks = priorBlocks; } V include_plain_file(NgaState *vm, char *fname, int run_tests) { char source[64 * 1024]; /* Token buffer [about 64K] */ CELL ReturnStack[ADDRESSES]; CELL arp, aip; long offset = 0; CELL at = 0; int tokens = 0; FILE *fp; /* Open the file. If not found, */ fp = fopen(fname, "r"); /* exit. */ if (fp == NULL) { printf("File `%s` not found. Exiting.\n", fname); exit(1); } arp = ACTIVE.rp; aip = ACTIVE.ip; for(ACTIVE.rp = 0; ACTIVE.rp <= arp; ACTIVE.rp++) ReturnStack[ACTIVE.rp] = ACTIVE.address[ACTIVE.rp]; ACTIVE.rp = 0; vm->current_source++; strlcpy(vm->scripting_sources[vm->current_source], fname, 8192); vm->ignoreToEOF = 0; while (!feof(fp) && (vm->ignoreToEOF == 0)) { /* Loop through the file */ vm->ignoreToEOL = 0; offset = ftell(fp); read_line(vm, fp, vm->line); at++; fseek(fp, offset, SEEK_SET); skip_indent(fp); tokens = count_tokens(vm->line); while (tokens > 0 && vm->ignoreToEOL == 0) { tokens--; read_token(fp, source); vm->currentLine = at; evaluate(vm, source); vm->currentLine = at; } if (vm->ignoreToEOL == -1) { read_line(vm, fp, vm->line); } } vm->current_source--; vm->ignoreToEOF = 0; fclose(fp); if (vm->perform_abort == -1) { carry_out_abort(vm); } for(ACTIVE.rp = 0; ACTIVE.rp <= arp; ACTIVE.rp++) ACTIVE.address[ACTIVE.rp] = ReturnStack[ACTIVE.rp]; ACTIVE.rp = arp; ACTIVE.ip = aip; } /*--------------------------------------------------------------------- `initialize()` sets up Nga and loads the image (from the array in `image.c`) to memory. ---------------------------------------------------------------------*/ V initialize(NgaState *vm) { prepare_vm(vm); load_embedded_image(vm); vm->interactive = 0; strlcpy(vm->code_start, "~~~", 256); strlcpy(vm->code_end, "~~~", 256); strlcpy(vm->test_start, "```", 256); strlcpy(vm->test_end, "```", 256); /* Setup variables related to the scripting device */ vm->currentLine = 0; /* Current Line # for script */ vm->current_source = 0; /* Current file being run */ vm->perform_abort = 0; /* Carry out abort procedure */ strlcpy(vm->scripting_sources[0], "/dev/stdin", 8192); vm->ignoreToEOL = 0; vm->ignoreToEOF = 0; vm->codeBlocks = 0; } V help(char *exename) { printf("Scripting Usage: %s filename\n\n", exename); printf("Interactive Usage: %s [-h] [-i] [-f filename] [-t filename]\n\n", exename); printf("Valid Arguments:\n\n"); printf(" -h\n"); printf(" Display this help text\n"); printf(" -i\n"); printf(" Launches in interactive mode\n"); printf(" -f filename\n"); printf(" Run the contents of the code blocks in the specified file\n"); printf(" -p filename\n"); printf(" Run the contents of the specified file\n"); printf(" -u filename\n"); printf(" Use the image in the specified file instead of the internal one\n"); printf(" -r filename\n"); printf(" Use the image in the specified file instead of the internal one and run the code in it\n"); printf(" -t filename\n"); printf(" Run the contents of the code blocks in the specified file, including any tests (in ``` blocks)\n\n"); printf(" -v\n"); printf(" Run in verbose mode\n"); } /* Signal Handler -----------------------------------------------------*/ #ifdef ENABLE_SIGNALS static V sig_handler(int _) { printf("\nCaught: %d\n", _); exit(1); } #endif /* Main Entry Point ---------------------------------------------------*/ enum flags { FLAG_HELP, FLAG_INTERACTIVE, }; V register_devices(NgaState *vm) { register_device(vm, io_output, query_output); register_device(vm, io_keyboard, query_keyboard); #ifdef ENABLE_FILES register_device(vm, io_filesystem, query_filesystem); #endif register_device(vm, io_image, query_image); #ifdef ENABLE_FLOATS register_device(vm, io_floatingpoint, query_floatingpoint); #endif #ifdef ENABLE_UNIX register_device(vm, io_unix, query_unix); #endif #ifdef ENABLE_MALLOC #ifdef BIT64 register_device(vm, io_malloc, query_malloc); #endif #endif #ifdef ENABLE_BLOCKS register_device(vm, io_blocks, query_blocks); #endif #ifdef ENABLE_CLOCK register_device(vm, io_clock, query_clock); #endif register_device(vm, io_scripting, query_scripting); #ifdef ENABLE_RNG register_device(vm, io_rng, query_rng); #endif #ifdef ENABLE_SOCKETS register_device(vm, io_socket, query_socket); #endif #ifdef ENABLE_MULTICORE register_device(vm, io_multicore, query_multicore); #endif #ifdef ENABLE_FFI register_device(vm, io_ffi, query_ffi); nlibs = 0; nffi = 0; #endif #ifdef ENABLE_UNSIGNED register_device(vm, io_unsigned, query_unsigned); #endif #ifdef ENABLE_ERROR register_device(vm, io_error, query_error); #endif #ifdef ENABLE_IOCTL register_device(vm, io_ioctl, query_ioctl); #endif } V register_signal_handlers() { #ifdef ENABLE_SIGNALS signal(SIGHUP, sig_handler); signal(SIGINT, sig_handler); signal(SIGILL, sig_handler); signal(SIGBUS, sig_handler); signal(SIGFPE, sig_handler); #endif } #define ARG(n) (strcmp(argv[i], n) == 0) int main(int argc, char **argv) { int i; int modes[16]; NgaState *vm = calloc(sizeof(NgaState), sizeof(char)); verbose = 0; register_signal_handlers(); initialize(vm); /* Initialize Nga & image */ register_devices(vm); vm->sys_argc = argc; /* Point the global argc and */ vm->sys_argv = argv; /* argv to the actual ones */ strlcpy(vm->scripting_sources[0], "", 8192); /* Check arguments. If no flags were passed, load & run the file specified and exit. */ if (argc >= 2 && argv[1][0] != '-') { update_rx(vm); include_file(vm, argv[1], 0); if (ACTIVE.sp >= 1) dump_stack(vm); exit(0); } /* Clear startup modes */ for (i = 0; i < 16; i++) modes[i] = 0; if (argc <= 1) modes[FLAG_INTERACTIVE] = 1; update_rx(vm); /* Process Arguments */ for (i = 1; i < argc; i++) { if ARG("-h") { help(argv[0]); exit(0); } else if ARG("-v") { verbose = 1; } else if ARG("-i") { modes[FLAG_INTERACTIVE] = 1; vm->interactive = -1; } else if ARG("-f") { include_file(vm, argv[i + 1], 0); i++; } else if ARG("-p") { include_plain_file(vm, argv[i + 1], 0); i++; } else if ARG("-u") { i++; load_image(vm, argv[i]); update_rx(vm); } else if ARG("-r") { i++; load_image(vm, argv[i]); modes[FLAG_INTERACTIVE] = 1; update_rx(vm); } else if ARG("-t") { include_file(vm, argv[i + 1], 1); i++; } else if (ARG("--code-start") || ARG("-cs")) { i++; strlcpy(vm->code_start, argv[i], 256); } else if (ARG("--code-end") || ARG("-ce")) { i++; strlcpy(vm->code_end, argv[i], 256); } else if (ARG("--test-start") || ARG("-ts")) { i++; strlcpy(vm->test_start, argv[i], 256); } else if (ARG("--test-end") || ARG("-te")) { i++; strlcpy(vm->test_end, argv[i], 256); } } /* Run the Listener (if interactive mode was set) */ if (modes[FLAG_INTERACTIVE] == 1) { execute(vm, 0); } /* Dump Stack */ if (ACTIVE.sp >= 1) dump_stack(vm); free(vm); } /*=====================================================================*/ /*--------------------------------------------------------------------- Interfacing With The Image ---------------------------------------------------------------------*/ /*--------------------------------------------------------------------- Stack push/pop is easy. I could avoid these, but it aids in keeping the code readable, so it's worth the slight overhead. ---------------------------------------------------------------------*/ CELL stack_pop(NgaState *vm) { ACTIVE.sp--; return ACTIVE.data[ACTIVE.sp + 1]; } V stack_push(NgaState *vm, CELL value) { ACTIVE.sp++; ACTIVE.data[ACTIVE.sp] = value; } /*--------------------------------------------------------------------- Strings are next. RETRO uses C-style NULL terminated strings. So I can easily inject or extract a string. Injection iterates over the string, copying it into the image. This also takes care to ensure that the NULL terminator is added. ---------------------------------------------------------------------*/ CELL string_inject(NgaState *vm, char *str, CELL buffer) { if (!str) { vm->memory[buffer] = 0; return 0; } for (CELL i = 0; str[i] != '\0'; i++) { vm->memory[buffer + i] = (CELL)str[i]; vm->memory[buffer + i + 1] = 0; } return buffer; } /*--------------------------------------------------------------------- Extracting a string is similar, but I have to iterate over the VM memory instead of a C string and copy the charaters into a buffer. This uses a static buffer (`string_data`) as I prefer to avoid using `malloc()`. ---------------------------------------------------------------------*/ char *string_extract(NgaState *vm, CELL at) { CELL starting = at, i = 0; while (vm->memory[starting] && i < 8192) vm->string_data[i++] = (char)vm->memory[starting++]; vm->string_data[i] = 0; return (char *)vm->string_data; } /*--------------------------------------------------------------------- This interface tracks a few words and variables in the image. These are: Dictionary - the latest dictionary header interpret - the heart of the interpreter/compiler I have to call this periodically, as the Dictionary will change as new words are defined, and the user might write a new error handler or interpreter. ---------------------------------------------------------------------*/ V update_rx(NgaState *vm) { vm->Dictionary = vm->memory[2]; vm->interpret = vm->memory[5]; if (vm->memory[10] != 0) { execute(vm, vm->memory[10]); } } /*=====================================================================*/ V register_device(NgaState *vm, V *handler, V *query) { vm->IO_deviceHandlers[vm->devices] = handler; vm->IO_queryHandlers[vm->devices] = query; vm->devices++; } V load_embedded_image(NgaState *vm) { int i; for (i = 0; i < ngaImageCells; i++) vm->memory[i] = ngaImage[i]; } CELL load_image(NgaState *vm, char *imageFile) { FILE *fp; CELL imageSize = 0; long fileLen; if ((fp = fopen(imageFile, "rb")) != NULL) { /* Determine length (in cells) */ fseek(fp, 0, SEEK_END); fileLen = ftell(fp) / sizeof(CELL); if (fileLen > IMAGE_SIZE) { fclose(fp); printf("\nERROR (nga/ngaLoadImage): Image is larger than alloted space!\n"); exit(1); } rewind(fp); /* Erase old image in memory: 0 = nop instruction */ for (int i = 0; i < IMAGE_SIZE; i++) { vm->memory[i] = 0; } /* Read the file into memory */ imageSize = fread(vm->memory, sizeof(CELL), fileLen, fp); fclose(fp); } return imageSize; } V prepare_vm(NgaState *vm) { vm->active = 0; ACTIVE.ip = ACTIVE.sp = ACTIVE.rp = ACTIVE.u = 0; ACTIVE.active = -1; for (ACTIVE.ip = 0; ACTIVE.ip < IMAGE_SIZE; ACTIVE.ip++) vm->memory[ACTIVE.ip] = 0; /* NO - nop instruction */ for (ACTIVE.ip = 0; ACTIVE.ip < STACK_DEPTH; ACTIVE.ip++) ACTIVE.data[ACTIVE.ip] = 0; for (ACTIVE.ip = 0; ACTIVE.ip < ADDRESSES; ACTIVE.ip++) ACTIVE.address[ACTIVE.ip] = 0; } V i_no(NgaState *vm) { #ifndef BRANCH_PREDICTION guard(vm, 0, 0, 0); #endif } V i_li(NgaState *vm) { guard(vm, 0, 1, 0); ACTIVE.sp++; ACTIVE.ip++; TOS = vm->memory[ACTIVE.ip]; } V i_du(NgaState *vm) { guard(vm, 1, 2, 0); ACTIVE.sp++; ACTIVE.data[ACTIVE.sp] = NOS; } V i_dr(NgaState *vm) { guard(vm, 1, 0, 0); ACTIVE.data[ACTIVE.sp] = 0; ACTIVE.sp--; } V i_sw(NgaState *vm) { guard(vm, 2, 2, 0); CELL a; a = TOS; TOS = NOS; NOS = a; } V i_pu(NgaState *vm) { guard(vm, 1, 0, 1); ACTIVE.rp++; TORS = TOS; i_dr(vm); } V i_po(NgaState *vm) { guard(vm, 0, 1, -1); ACTIVE.sp++; TOS = TORS; ACTIVE.rp--; } V i_ju(NgaState *vm) { guard(vm, 1, 0, 0); ACTIVE.ip = TOS - 1; i_dr(vm); } V i_ca(NgaState *vm) { guard(vm, 1, 0, 1); ACTIVE.rp++; TORS = ACTIVE.ip; ACTIVE.ip = TOS - 1; i_dr(vm); } V i_cc(NgaState *vm) { guard(vm, 2, 0, 1); CELL a, b; a = TOS; i_dr(vm); /* Target */ b = TOS; i_dr(vm); /* Flag */ if (b != 0) { ACTIVE.rp++; TORS = ACTIVE.ip; ACTIVE.ip = a - 1; } } V i_re(NgaState *vm) { guard(vm, 0, 0, -1); ACTIVE.ip = TORS; ACTIVE.rp--; } V i_eq(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = ((unsigned)NOS == (unsigned)TOS) ? -1 : 0; ACTIVE.u = 0; } else { NOS = (NOS == TOS) ? -1 : 0; } i_dr(vm); } V i_ne(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = ((unsigned)NOS != (unsigned)TOS) ? -1 : 0; ACTIVE.u = 0; } else { NOS = (NOS != TOS) ? -1 : 0; } i_dr(vm); } V i_lt(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = ((unsigned)NOS < (unsigned)TOS) ? -1 : 0; ACTIVE.u = 0; } else { NOS = (NOS < TOS) ? -1 : 0; } i_dr(vm); } V i_gt(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = ((unsigned)NOS > (unsigned)TOS) ? -1 : 0; ACTIVE.u = 0; } else { NOS = (NOS > TOS) ? -1 : 0; } i_dr(vm); } V i_fe(NgaState *vm) { guard(vm, 1, 1, 0); switch (TOS) { case -1: TOS = ACTIVE.sp - 1; break; case -2: TOS = ACTIVE.rp; break; case -3: TOS = IMAGE_SIZE; break; case -4: TOS = CELL_MIN; break; case -5: TOS = CELL_MAX; break; default: TOS = vm->memory[TOS]; break; } } V i_st(NgaState *vm) { guard(vm, 2, 0, 0); vm->memory[TOS] = NOS; i_dr(vm); i_dr(vm); } V i_ad(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = (unsigned)NOS + (unsigned)TOS; ACTIVE.u = 0; } else { NOS += TOS; } i_dr(vm); } V i_su(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = (unsigned)NOS - (unsigned)TOS; ACTIVE.u = 0; } else { NOS -= TOS; } i_dr(vm); } V i_mu(NgaState *vm) { guard(vm, 2, 1, 0); if (ACTIVE.u != 0) { NOS = (unsigned)NOS * (unsigned)TOS; ACTIVE.u = 0; } else { NOS *= TOS; } i_dr(vm); } V i_di(NgaState *vm) { guard(vm, 2, 2, 0); CELL a, b; a = TOS; b = NOS; if (b == 0) { #ifdef ENABLE_ERROR if (vm->ErrorHandlers[6] != 0) { } #endif } if (ACTIVE.u != 0) { TOS = (unsigned)b / (unsigned)a; NOS = (unsigned)b % (unsigned)a; ACTIVE.u = 0; } else { TOS = b / a; NOS = b % a; } } V i_an(NgaState *vm) { guard(vm, 2, 1, 0); NOS = TOS & NOS; i_dr(vm); } V i_or(NgaState *vm) { guard(vm, 2, 1, 0); NOS = TOS | NOS; i_dr(vm); } V i_xo(NgaState *vm) { guard(vm, 2, 1, 0); NOS = TOS ^ NOS; i_dr(vm); } V i_sh(NgaState *vm) { guard(vm, 2, 1, 0); CELL y = TOS; CELL x = NOS; if (TOS < 0) NOS = NOS << (0 - TOS); else { if (ACTIVE.u != 0) { NOS = (unsigned)x >> (unsigned)y; ACTIVE.u = 0; } else { if (x < 0 && y > 0) NOS = x >> y | ~(~0U >> y); else NOS = x >> y; } } i_dr(vm); } V i_zr(NgaState *vm) { guard(vm, 1, 0, 0); if (TOS == 0) { i_dr(vm); ACTIVE.ip = TORS; ACTIVE.rp--; } } V i_ha(NgaState *vm) { guard(vm, 0, 0, 0); ACTIVE.ip = IMAGE_SIZE; ACTIVE.rp = 0; exit(0); } V i_ie(NgaState *vm) { guard(vm, 1, 1, 0); stack_push(vm, vm->devices); } V i_iq(NgaState *vm) { guard(vm, 1, 1, 0); vm->IO_queryHandlers[stack_pop(vm)](vm); } V i_ii(NgaState *vm) { guard(vm, 1, 0, 0); vm->IO_deviceHandlers[stack_pop(vm)](vm); } Handler instructions[] = { i_no, i_li, i_du, i_dr, i_sw, i_pu, i_po, i_ju, i_ca, i_cc, i_re, i_eq, i_ne, i_lt, i_gt, i_fe, i_st, i_ad, i_su, i_mu, i_di, i_an, i_or, i_xo, i_sh, i_zr, i_ha, i_ie, i_iq, i_ii }; V process_opcode(NgaState *vm, CELL opcode) { #ifdef FAST switch (opcode) { case 0: break; case 1: i_li(vm); break; case 2: i_du(vm); break; case 3: i_dr(vm); break; case 4: i_sw(vm); break; case 5: i_pu(vm); break; case 6: i_po(vm); break; case 7: i_ju(vm); break; case 8: i_ca(vm); break; case 9: i_cc(vm); break; case 10: i_re(vm); break; case 11: i_eq(vm); break; case 12: i_ne(vm); break; case 13: i_lt(vm); break; case 14: i_gt(vm); break; case 15: i_fe(vm); break; case 16: i_st(vm); break; case 17: i_ad(vm); break; case 18: i_su(vm); break; case 19: i_mu(vm); break; case 20: i_di(vm); break; case 21: i_an(vm); break; case 22: i_or(vm); break; case 23: i_xo(vm); break; case 24: i_sh(vm); break; case 25: i_zr(vm); break; case 26: i_ha(vm); break; case 27: i_ie(vm); break; case 28: i_iq(vm); break; case 29: i_ii(vm); break; default: break; } #else if (opcode != 0) instructions[opcode](vm); #endif } #ifndef BRANCH_PREDICTION V validate_opcode_bundle(NgaState *vm, CELL opcode) { CELL remainingOpcode = opcode; for (int i = 0; i < 4; i++) { CELL current = remainingOpcode & 0xFF; if (current < 0 || current > 29) { invalid_opcode(vm, opcode); } remainingOpcode >>= 8; } } #endif V verbose_details(NgaState *vm, CELL opcode) { fprintf(stderr, "ip: %lld ", (long long)ACTIVE.ip); fprintf(stderr, "sp: %lld ", (long long)ACTIVE.sp); fprintf(stderr, "rp: %lld ", (long long)ACTIVE.rp); fprintf(stderr, "core: %lld ", (long long)vm->active); fprintf(stderr, "opcode: %lld\n", (long long)opcode); } #define INST(n) ((opcode >> n) & 0xFF) != 0 V process_opcode_bundle(NgaState *vm, CELL opcode) { #ifndef BRANCH_PREDICTION if (INST(0)) instructions[opcode & 0xFF](vm); if (INST(8)) instructions[(opcode >> 8) & 0xFF](vm); if (INST(16)) instructions[(opcode >> 16) & 0xFF](vm); if (INST(24)) instructions[(opcode >> 24) & 0xFF](vm); #else for (size_t i = 0; i < 4; ++i) { uint8_t current = ((uint8_t*)&opcode)[i]; if (unlikely(current > 29)) { invalid_opcode(vm, opcode); } instructions[current](vm); } #endif } #ifdef NEEDS_STRL /*--------------------------------------------------------------------- Copyright (c) 1998, 2015 Todd C. Miller Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --------------------------------------------------------------------*/ size_t strlcat(char *dst, const char *src, size_t dsize) { const char *odst = dst; const char *osrc = src; size_t n = dsize; size_t dlen; /* Find the end of dst and adjust bytes left but don't go past end. */ while (n-- != 0 && *dst != '\0') dst++; dlen = dst - odst; n = dsize - dlen; if (n-- == 0) return(dlen + strlen(src)); while (*src != '\0') { if (n != 0) { *dst++ = *src; n--; } src++; } *dst = '\0'; return(dlen + (src - osrc)); /* count does not include NUL */ } size_t strlcpy(char *dst, const char *src, size_t dsize) { const char *osrc = src; size_t nleft = dsize; /* Copy as many bytes as will fit. */ if (nleft != 0) { while (--nleft != 0) { if ((*dst++ = *src++) == '\0') break; } } /* Not enough room in dst, add NUL and traverse rest of src. */ if (nleft == 0) { if (dsize != 0) *dst = '\0'; /* NUL-terminate dst */ while (*src++) ; } return(src - osrc - 1); /* count does not include NUL */ } #endif