diff --git a/misc/testsuite/upx_testsuite_1-expected_sha256sums.sh b/misc/testsuite/upx_testsuite_1-expected_sha256sums.sh index d705d180..997e512d 100644 --- a/misc/testsuite/upx_testsuite_1-expected_sha256sums.sh +++ b/misc/testsuite/upx_testsuite_1-expected_sha256sums.sh @@ -56,8 +56,8 @@ d63d4c9886b175c5388758c3d963e8d0b1e562536cf22e85792df35b028a94c1 *arm64-linux.el 6e4ff31a80809fc5058ae714ab10ad7810c310bd7d116fad8b198009b9872312 *armeb-linux.elf/upx-3.95 e17a126cebc32977991a292b7434d1435a7c95862ccece0e4acbf6e810bd3443 *i386-dos32.djgpp2.coff/upx-3.91.exe 88c54fa6bda1bbee0317c839dd756458ebe9bf4b0f6d746139517c7e0c3c9c6f *i386-dos32.djgpp2.coff/upx-3.95.exe -154b474e63268578910a2117b25fd3838647fdb5af878db368f766155389c8dd *i386-linux.elf/upx-3.91 -a1bb8789d6ee1668e6dc4b0816172c14dec1745496b9e11b172dd9af37a06462 *i386-linux.elf/upx-3.95 +e5ccaa48ec0223990abc7681bb97a9f49b0192db4d04a21b0525dd610bfcbcae *i386-linux.elf/upx-3.91 +378c6902bb6c23cf425b3c135fc9bf264ae20b54b729aef0ba3cee9582131df1 *i386-linux.elf/upx-3.95 9bc7ba34e675311527776726a98450722ac9faee73ef5df96a8e8dbd2943b734 *i386-win32.pe/upx-3.91.exe 0a33acc8fa5549c59a87897b318ab83d1eb2ffa7d6c156e92d71c4e9ab4c6483 *i386-win32.pe/upx-3.95.exe 22a6fe5e84dc759675c14314f1d72b84b64e22d106b4158969f5bc4f572288a1 *m68k-atari.tos/upx-3.91.ttp @@ -79,8 +79,8 @@ d7839b7dee866794e4ca3df32e2b1084b35aa22dee5f060fa14b5ca09c612ba3 *arm-wince.pe/u 4a9d498ec0df4923ebb475f634c25f9b47eea115998adfd9c46b7dc4a561cf47 *armeb-linux.elf/upx-3.95 4a434c3a14686786369c8bede8736d15e307ed7dd8c40cccb8f22003b05db968 *i386-dos32.djgpp2.coff/upx-3.91.exe 4ec6858a6c453176db25de5317269fa973f07051a15c9ff146920153dda52350 *i386-dos32.djgpp2.coff/upx-3.95.exe -b770116a55261222e825b7fb1f46f899e371d6f1a6468c61daa6651df5426e5f *i386-linux.elf/upx-3.91 -a2e13e80a7bc4781f641ced647e37f636496dce582fa8e563d015259e136e43f *i386-linux.elf/upx-3.95 +d1c2204d10c2753b485f0aac2d58e6ec614951271436467c345e113465e9fb9b *i386-linux.elf/upx-3.91 +feda640e1409a0d7f7c84742832e76fbf9786d137eccc568b04913f24727eb51 *i386-linux.elf/upx-3.95 18c0e4fb6bf6b26b5c943c54571007b4aba4d0a4ba7391c149eeada54a0a404d *i386-win32.pe/upx-3.91.exe 8501c4a677eb66b482987122febc0360fc02f6720fd7c19d311cf60314d5705e *i386-win32.pe/upx-3.95.exe b8d481769be7aa7768bb1bd8775e766512c5720813e5d8bab6decb200a916f11 *m68k-atari.tos/upx-3.91.ttp @@ -102,8 +102,8 @@ expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\ c3ec4a5148e25f74f6c8dca92b608f65dc5539f9c5a0f839f801612b13505bd1 *armeb-linux.elf/upx-3.95 d454dd376db342e7650a93bd4859546711c94f5da55336e5b969dbea996465d9 *i386-dos32.djgpp2.coff/upx-3.91.exe 89fdaef155f19e1388412109c955b3368df7e39f13ae2ef5db5b0f0df3df81ab *i386-dos32.djgpp2.coff/upx-3.95.exe -f5458dc71e68e53c8746e5f98abdc093b0b0b37ae04a941bc8c4194af3b78966 *i386-linux.elf/upx-3.91 -cd8591b7b1b3862d3c3aab6993792666be8792de474fe790ba70905cad9decbd *i386-linux.elf/upx-3.95 +313f889ea2623c553c73989949dde6404243336ee7087901e860c882620379a1 *i386-linux.elf/upx-3.91 +73857b83634cb00c62f841bce1fd6502d32392beaad3741639d4d45257e00716 *i386-linux.elf/upx-3.95 674216006959b78ef9bfeed682a6a858f657a860123c620dc77daf5d3c46c40d *i386-win32.pe/upx-3.91.exe a47825b63e33e2ff5f07ec2b8e51991172a1e26e17fa1b2a19dc7857ab76db35 *i386-win32.pe/upx-3.95.exe 2fc38c89629269a6c5ec22113f6a84a8b91e04c861359125d1c8e44d17ac190a *m68k-atari.tos/upx-3.91.ttp @@ -125,8 +125,8 @@ b2faa2181b1d5c3718c1c05c5ae130b61ee67a3b481b3235ac3af3d5de9ddce8 *arm64-linux.el 895a9facf830fbcf2953adc0d7cf364fc5ab716f03940fc6165b49343c5253de *armeb-linux.elf/upx-3.95 4e16bdab8b74ea5c7de4f255eec035189c24ac6374afef883c17696642c4fe16 *i386-dos32.djgpp2.coff/upx-3.91.exe a526f335f984af6f8adb5dca85c5564ab888c009b79daead8631de766857e033 *i386-dos32.djgpp2.coff/upx-3.95.exe -698284cca405aea740f425697f2ffba8c99ce68048b5db917e4d2553f8668f58 *i386-linux.elf/upx-3.91 -a66a42854bc6af7520d7f5b716353bba1e95a4837da4ba2e86bd4933e41e4221 *i386-linux.elf/upx-3.95 +94f234404c58bf66ca9197eff731a84e8aac2ac57524ce20e7282664d6e98806 *i386-linux.elf/upx-3.91 +ddaef53601380a2793b732c9c9583aa14dae24f35330007633d5f1b1aaf525c8 *i386-linux.elf/upx-3.95 3962e6a21c0c54faa0c356ef7be6d8f025f245a7c785135d063032b3456af9a9 *i386-win32.pe/upx-3.91.exe 2273e39a88ef856e17dddf9fc4e5b67b159fc6214b45c1110e446725239eaf97 *i386-win32.pe/upx-3.95.exe d81bbba6a8ede3aa9bebcd28280914c1084dc0a9ff1d000389e3f52ff05a1ac7 *m68k-atari.tos/upx-3.91.ttp @@ -148,8 +148,8 @@ fe3bb2d827888c20e34bf86f6b1593408d91338934530df2e7aa2af2149a1627 *arm64-linux.el 591f023a8c6506cf8113fcb8a8672d0044890d60c6b9372a7eeeb40c9f5af464 *armeb-linux.elf/upx-3.95 2957b481e67689a5ad43dcfdfde207b9eb16142c161f3e43fd0eeff5917fefbd *i386-dos32.djgpp2.coff/upx-3.91.exe 8f02dbfdbddad405ec599afba4ead6d300ab792f7188df7a32a9d7d3dc7d72c9 *i386-dos32.djgpp2.coff/upx-3.95.exe -262a3de42c5cee2f9b7d38e5be0df45d9df7ee88d83b36fc566fdb0154ccec8c *i386-linux.elf/upx-3.91 -5d753125d3b1b027deccd582e6606bbb522df2c80afba13d1d5bad5dd6f2861f *i386-linux.elf/upx-3.95 +10fa881f45706adef32effd3320566d46af2f9e4c9e6198ceade511f324c3952 *i386-linux.elf/upx-3.91 +db91d9f600cdfe4996fd7b34bd89911fce9dbb9ff1f0c2363a286075f40564e4 *i386-linux.elf/upx-3.95 b233f8508a150a20dffaeb6da057ccfd1cf78fbb89d9bdf3fbdd1c21716665e3 *i386-win32.pe/upx-3.91.exe 57a4ff483773e64ab95963445049bff4044e055f31c13bd74c039fba1f113401 *i386-win32.pe/upx-3.95.exe 1c8973e104c93be98db7d5411b478d0badb7b6d5373f7d28e94f435fb31faa7e *m68k-atari.tos/upx-3.91.ttp @@ -171,8 +171,8 @@ d33a702da5d0c46e744056c24e8323360223ed8e1be07660eecc28ade7b5fc75 *armeb-linux.el 57790e4d030d32d19ae6ba2a485a5bc6f7244c7e65d3ec4c8b0afe395927dd83 *armeb-linux.elf/upx-3.95 8673a20ba4b83e25daab30431ed215dcb35f595fa0cabf67ff57368a07ba4c14 *i386-dos32.djgpp2.coff/upx-3.91.exe c7eb37a33f4f044ce444e5c258fade07c8fdf6d64236900c839196bedcb241fe *i386-dos32.djgpp2.coff/upx-3.95.exe -498471f3578ac0272f46a4036f318374a75c147f99f93ee2bd2a85eeadd87c90 *i386-linux.elf/upx-3.91 -7a7b40312319054cb8dfa9281014e13592a93f3b7f55aa285658cb76e87c847c *i386-linux.elf/upx-3.95 +e40f96019386617f462a0216d6301639fae7ca0ed16cd7c0d52e8a95372d60c1 *i386-linux.elf/upx-3.91 +89030f9375babb8a2b72282e9fe48785bc7f2b91b23d2cb4b95d01ac405e4d70 *i386-linux.elf/upx-3.95 577f01e1f02bf8cc9632057cf59c2a146456d768c60aa2df69c34d4631023f9d *i386-win32.pe/upx-3.91.exe f6a7a90073cf16f53c17a2ae7aea1c91beff0c2926d41c628a8d1a724bc37e6b *i386-win32.pe/upx-3.95.exe 0bc481806564627f23125e3ab6fa59e8b90e35f0f117c3d185a728086ad02351 *m68k-atari.tos/upx-3.91.ttp @@ -194,8 +194,8 @@ cdc4ed9c5f1f724c436a3fc97a45b6b89605b34d8210ab6fdbbefb5954b5361b *amd64-linux.el 03e9bb54264382f17dc15e451b9aff634e41d0b3e14585350479bf143b612c09 *armeb-linux.elf/upx-3.95 6f9fbac216cd42aa370cb90965e74669daf33fd403bf0a250aaec06dd3439009 *i386-dos32.djgpp2.coff/upx-3.91.exe 902f1c5036680b0fadbebaef913c4062f0ce5ef0f2d537f7e6da31d23974139d *i386-dos32.djgpp2.coff/upx-3.95.exe -9bfc26e7b89180c4f093dfee47c9f7b7029aec54883fa26ac2335c980eff0e74 *i386-linux.elf/upx-3.91 -6b49e38fbd8ce8db7cbdd1d438c10ba3d24bc0f03c56f1c39deabd3340eeaae7 *i386-linux.elf/upx-3.95 +5716eeb0a4dc7320c9b4f871d4bc4ad0ac33b9e7aed1437c316e1dd63f981b70 *i386-linux.elf/upx-3.91 +bbcffe672440af91438919f52d79414fb0e658ab4d97cf11d996c01ba88f69eb *i386-linux.elf/upx-3.95 63afac5307a2385757b3d29753c64e0026241ea2ca1324f53e8ccb4263cc9f62 *i386-win32.pe/upx-3.91.exe eb01b6f27798690115cabb88314551579da509455232bbaa3276eddc25106d0d *i386-win32.pe/upx-3.95.exe 3a5fa857ff517e41386062a0fb2be4f8b6fa5cb79d5624b5a00947c1f2758afb *m68k-atari.tos/upx-3.91.ttp diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index 76acfae9..6705c378 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -1496,7 +1496,7 @@ PackLinuxElf32::buildLinuxLoader( method = M_NRV2B_8; //only ARM v6 and above has unaligned fetch } // end shlib else if (0 -//ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_386 + || this->e_machine==Elf32_Ehdr::EM_386 //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_MIPS //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_PPC //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_ARM @@ -1567,10 +1567,11 @@ PackLinuxElf32::buildLinuxLoader( linker->addSection("FOLDEXEC", mb_cprLoader, sizeof(b_info) + sz_cpr, 0); if (xct_off // shlib && (0 - || this->e_machine==Elf32_Ehdr::EM_ARM +//ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_ARM //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_MIPS //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_PPC - || this->e_machine==Elf32_Ehdr::EM_386) + || this->e_machine==Elf32_Ehdr::EM_386 + ) ) { // shlib with ELF2 de-compressor addLoader("ELFMAINX,ELFMAINZ,FOLDEXEC,IDENTSTR"); } @@ -1578,7 +1579,7 @@ PackLinuxElf32::buildLinuxLoader( //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_ARM //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_MIPS //ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_PPC -//ELF2 NYI || this->e_machine==Elf32_Ehdr::EM_386 + || this->e_machine==Elf32_Ehdr::EM_386 ) { // main program with ELF2 de-compressor addLoader("ELFMAINX,ELFMAINZ,FOLDEXEC,IDENTSTR"); defineSymbols(ft); @@ -3628,6 +3629,7 @@ PackLinuxElf32::generateElfHdr( h2->phdr[C_TEXT].p_vaddr = h2->phdr[C_BASE].p_vaddr; h2->phdr[C_TEXT].p_paddr = h2->phdr[C_BASE].p_vaddr; set_te32(&h2->phdr[C_BASE].p_type, PT_LOAD32); // be sure + set_te32(&h2->phdr[C_TEXT].p_type, PT_LOAD32); // be sure h2->phdr[C_BASE].p_offset = 0; h2->phdr[C_BASE].p_filesz = 0; // .p_memsz = brka; temporary until sz_pack2 diff --git a/src/stub/Makefile b/src/stub/Makefile index e0f11eb6..d487a55d 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -1179,7 +1179,6 @@ i386-dos32.watcom.le.h : $(srcdir)/src/$$T.S # /*********************************************************************** # // i386-linux.elf # ************************************************************************/ - i386-linux.elf%.h : tc_list = i386-linux.elf arch-i386 default i386-linux.elf%.h : tc_bfdname = elf32-i386 @@ -1187,32 +1186,57 @@ tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MM tc.i386-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.i386-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror tc.i386-linux.elf.gcc += -mtune=k6 -tc.i386-linux.elf.gcc += -Os -fno-omit-frame-pointer +tc.i386-linux.elf.gcc += -O2 -fno-omit-frame-pointer tc.i386-linux.elf.gcc += -momit-leaf-frame-pointer tc.i386-linux.elf.gcc += -fno-align-functions -fno-align-jumps -fno-align-labels -fno-align-loops tc.i386-linux.elf.gcc += -mpreferred-stack-boundary=2 tc.i386-linux.elf.gcc += -fweb -i386-linux.elf-entry.h : $(srcdir)/src/$$T.S - $(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin - $(call tc,f-embed_objinfo,tmp/$T.bin) - $(call tc,bin2h) tmp/$T.bin $@ - -i386-linux.elf-so_entry.h: $(srcdir)/src/$$T.S - $(call tc,gcc) -c $< -o tmp/$T.bin +i386-linux.elf-entry.h : $(srcdir)/src/i386-linux.elf-entry.lds \ + $(srcdir)/src/$$T.S \ + tmp/i386-linux.elf-upxfd_android.o + $(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o + multiarch-ld-2.17 -r -Map tmp/$T.map -o tmp/$T.bin \ + -T src/i386-linux.elf-entry.lds \ + tmp/$T.o \ + tmp/i386-linux.elf-upxfd_android.o $(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin) $(call tc,bin2h) tmp/$T.bin $@ -i386-linux.elf-fold.h : tmp/$$T.o tmp/i386-linux.elf-main.o $(srcdir)/src/$$T.lds - $(call tc,ld) --strip-all -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin - $(call tc,f-objstrip,tmp/$T.bin) - $(call tc,sstrip) tmp/$T.bin +i386-linux.elf-so_entry.h : $(srcdir)/src/i386-linux.elf-so_entry.lds \ + $(srcdir)/src/$$T.S \ + tmp/i386-linux.elf-upxfd_android.o + $(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o + multiarch-ld-2.17 -r -Map tmp/$T.map -o tmp/$T.bin \ + -T src/i386-linux.elf-so_entry.lds \ + tmp/$T.o \ + tmp/i386-linux.elf-upxfd_android.o + $(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin) + $(call tc,bin2h) tmp/$T.bin $@ + +tmp/i386-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c + $(call tc,gcc) -c -O $< -o $@ + $(call tc,objcopy) -R .comment $@ + $(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm + +i386-linux.elf-fold.h : $(srcdir)/src/$$T.lds \ + tmp/$$T.o \ + tmp/i386-linux.elf-upxfd_android.o \ + tmp/i386-expand.o \ + tmp/i386-linux.elf-main2.o + $(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin + $(call tc,f-embed_objinfo_without_xstrip_keep_dot_text,tmp/$T.bin) $(call tc,brandelf) --elfosabi=linux tmp/$T.bin $(call tc,bin2h) tmp/$T.bin $@ -i386-linux.elf-so_fold.h : tmp/$$T.o tmp/i386-linux.elf-so_main.o $(srcdir)/src/$$T.lds tmp/i386-expand.o - multiarch-ld-2.17 -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin +i386-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \ + tmp/$$T.o \ + tmp/i386-linux.elf-upxfd_android.o \ + tmp/i386-expand.o \ + tmp/i386-linux.elf-so_main.o + $(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin $(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin) + $(call tc,brandelf) --elfosabi=linux tmp/$T.bin $(call tc,bin2h) tmp/$T.bin $@ tmp/i386-linux.elf-fold.o : $(srcdir)/src/$$T.S @@ -1227,7 +1251,7 @@ tmp/i386-linux.elf-so_fold.o : $(srcdir)/src/$$T.S tmp/i386-expand.o: $(srcdir)/src/$$T.S $(call tc,gcc) -c $< -o $@ -tmp/i386-linux.elf-main.o : $(srcdir)/src/$$T.c +tmp/i386-linux.elf-main2.o : $(srcdir)/src/$$T.c $(call tc,gcc) -c $< -o $@ $(call tc,f-objstrip,$@) diff --git a/src/stub/i386-bsd.elf-fold.h b/src/stub/i386-bsd.elf-fold.h index fa7b9b43..9a5a842f 100644 --- a/src/stub/i386-bsd.elf-fold.h +++ b/src/stub/i386-bsd.elf-fold.h @@ -1,5 +1,5 @@ /* i386-bsd.elf-fold.h - created from i386-bsd.elf-fold.bin, 1813 (0x715) bytes + created from i386-bsd.elf-fold.bin, 2021 (0x7e5) bytes This file is part of the UPX executable compressor. @@ -32,17 +32,17 @@ /* clang-format off */ -#define STUB_I386_BSD_ELF_FOLD_SIZE 1813 -#define STUB_I386_BSD_ELF_FOLD_ADLER32 0xa3ac09fc -#define STUB_I386_BSD_ELF_FOLD_CRC32 0x02d4716d +#define STUB_I386_BSD_ELF_FOLD_SIZE 2021 +#define STUB_I386_BSD_ELF_FOLD_ADLER32 0xa6e88778 +#define STUB_I386_BSD_ELF_FOLD_CRC32 0xcef3e019 -unsigned char stub_i386_bsd_elf_fold[1813] = { +unsigned char stub_i386_bsd_elf_fold[2021] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, -/* 0x0040 */ 0, 16,192, 0, 21, 7, 0, 0, 24, 7, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 16,192, 0,229, 7, 0, 0,232, 7, 0, 0, 5, 0, 0, 0, +/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,229, 7, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 41,201,186,248, 2, 0, 0,137,230,137,231,232,134, 0, 0, 0, @@ -51,104 +51,117 @@ unsigned char stub_i386_bsd_elf_fold[1813] = { /* 0x00b0 */ 141,148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192, /* 0x00c0 */ 102,131,123, 16, 3,117, 1,146, 80,139, 67, 24,139,112,248, 41, /* 0x00d0 */ 240,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, 71,232, -/* 0x00e0 */ 140, 4, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 90, +/* 0x00e0 */ 75, 5, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 90, /* 0x00f0 */ 193,226, 12, 1,211, 80,106, 0,137,229, 41,217, 41,192, 81, 83, /* 0x0100 */ 80, 79, 60,175,175,117,252,255, 55, 49,255, 49,246, 49,210, 49, /* 0x0110 */ 201, 49,219,176, 73,195,173,171,173,171,133,192,117,250,173,171, /* 0x0120 */ 133,192,117,250, 87,173,171,131,248, 32,115, 3, 15,179,194,133, /* 0x0130 */ 192,173,171,117,240,131,239, 8, 1,201, 64,243,171, 72,171,171, -/* 0x0140 */ 95,195, 0, 0, 85,137,229, 87, 86,137,206, 83,137,195, 57, 8, -/* 0x0150 */ 139,120, 4,115, 7,106,127,232,113, 5, 0, 0,133,201,116, 8, -/* 0x0160 */ 138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, 51,141,101,244, -/* 0x0170 */ 91, 94, 95,201,195, 85,137,229, 87, 86,137,198, 83,137,211,131, -/* 0x0180 */ 236, 24,139, 69, 8,139,125, 12,137, 69,220,131, 58, 0, 15,132, -/* 0x0190 */ 182, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0,137,240,232,161, -/* 0x01a0 */ 255,255,255,139, 69,228,139, 77,232,133,192,117, 19,129,249, 85, -/* 0x01b0 */ 80, 88, 33,117, 15,131, 62, 0, 15,132,140, 0, 0, 0,235, 4, -/* 0x01c0 */ 133,201,117, 7,106,127,232, 2, 5, 0, 0, 57,193,119,245, 59, -/* 0x01d0 */ 3,119,241, 57,193,115, 86,137, 69,224,141, 69,224,255,117,236, -/* 0x01e0 */ 80,255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20,133,192, -/* 0x01f0 */ 117,210,139, 85,224, 59, 85,228,117,202,138, 69,237,132,192,116, -/* 0x0200 */ 34,133,255,116, 30,129,250, 0, 2, 0, 0,119, 4, 57, 19,117, -/* 0x0210 */ 18, 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4,255,215, -/* 0x0220 */ 131,196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4, -/* 0x0230 */ 137,240,232, 13,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41, -/* 0x0240 */ 208,133,192,137, 3,233, 68,255,255,255,141,101,244, 91, 94, 95, -/* 0x0250 */ 201,195,133,192, 83,137,195,116, 35,168, 1,117, 31,139, 3, 57, -/* 0x0260 */ 208,116, 9,131,248, 1,117, 11,133,210,116, 11,137, 19,137, 75, -/* 0x0270 */ 4,235, 9,133,192,116, 5,131,195, 8,235,225, 91,195, 85,137, -/* 0x0280 */ 229, 87, 86, 83,131,236, 60,137, 85,224,137, 69,228,139, 85, 12, -/* 0x0290 */ 139, 69, 8,199, 69,204,255,255,255,255,137, 85,216,139,125,224, -/* 0x02a0 */ 139, 85,224,137, 69,220,139, 69, 20, 3,127, 28,137, 69,212, 49, -/* 0x02b0 */ 192,102,131,122, 16, 2, 15,183, 74, 44,137,251, 15,148,192, 49, -/* 0x02c0 */ 246,193,224, 4,137,202, 5, 2, 16, 0, 0, 74,120, 30,131, 59, -/* 0x02d0 */ 1,117, 20,139, 83, 8, 59, 85,204,115, 3,137, 85,204, 3, 83, -/* 0x02e0 */ 20, 57,214,115, 2,137,214,131,195, 32,226,226,139, 93,204,106, -/* 0x02f0 */ 0,106,255,129,227, 0,240,255,255, 80, 41,222,106, 0,129,198, -/* 0x0300 */ 255, 15, 0, 0,129,230, 0,240,255,255, 86, 83,232,151, 3, 0, -/* 0x0310 */ 0,131,196, 24,141, 52, 48, 41,216,137, 69,208,139, 69,224,137, -/* 0x0320 */ 117,240,102,131,120, 44, 0,199, 69,200, 0, 0, 0, 0, 15,132, -/* 0x0330 */ 242, 1, 0, 0,139, 7,131,248, 6,117, 34,131,125,220, 0, 15, -/* 0x0340 */ 132,203, 1, 0, 0,139, 77,208,186, 3, 0, 0, 0, 3, 79, 8, -/* 0x0350 */ 139, 69,216,232,250,254,255,255,233,179, 1, 0, 0, 72, 15,133, -/* 0x0360 */ 172, 1, 0, 0,139, 95, 20,133,219, 15,132,161, 1, 0, 0,139, -/* 0x0370 */ 79, 24,199, 69,196, 64, 98, 81,115,139, 69,208, 3, 71, 8,131, -/* 0x0380 */ 225, 7,193,225, 2,139, 87, 16,211,109,196,137,193,137,198,129, -/* 0x0390 */ 225,255, 15, 0, 0,131,101,196, 7,137, 85,232, 41,206, 1,202, -/* 0x03a0 */ 131,125,220, 0,141, 28, 24,137, 69,236,137, 93,188,137, 85,192, -/* 0x03b0 */ 116, 41,106, 0,139, 69,196,106,255,104, 18, 16, 0, 0,131,200, -/* 0x03c0 */ 2, 80,137,208,131,192, 3, 80, 86,232,218, 2, 0, 0,131,196, -/* 0x03d0 */ 24, 57,198, 15,133,226, 0, 0, 0,235, 36,139, 71, 4, 41,200, -/* 0x03e0 */ 80,255,117,228,106, 18,255,117,196,255,117,192, 86,232,182, 2, -/* 0x03f0 */ 0, 0,131,196, 24, 57,198, 15,133,190, 0, 0, 0,235, 34,131, -/* 0x0400 */ 125,220, 0,116, 28,246, 69,196, 4,139, 69,212,117, 2, 49,192, -/* 0x0410 */ 80,139, 69,220,255,117,228,141, 85,232,232, 86,253,255,255, 88, -/* 0x0420 */ 90,139, 85,192,247,218,129,226,255, 15, 0, 0,246, 69,196, 2, -/* 0x0430 */ 137, 85,184,116, 21,131,125,184, 0,139, 85,192,141, 4, 22,116, -/* 0x0440 */ 9,139, 77,184,198, 0, 0, 64,226,250,131,125,220, 0,116,114, -/* 0x0450 */ 131, 63, 1,117, 83,246, 71, 24, 1,116, 77,139, 87, 20,139, 95, -/* 0x0460 */ 8,141, 12, 26, 3, 77,208, 59, 87, 16,117, 14,137,200,247,216, -/* 0x0470 */ 37,255, 15, 0, 0,131,248, 3,119, 14,107, 69,208, 52,131,127, -/* 0x0480 */ 4, 0,141, 76, 3, 12,117, 15,139, 1, 61,205,128,201,195,116, -/* 0x0490 */ 6,199, 1,205,128,201,195,133,201,116, 13,139, 69,216, 49,210, -/* 0x04a0 */ 131,224,254,232,170,253,255,255,255,117,196,255,117,192, 86,232, -/* 0x04b0 */ 53, 2, 0, 0,131,196, 12,133,192,116, 7,106,127,232, 11, 2, -/* 0x04c0 */ 0, 0,139, 69,192, 3, 69,184,141, 28, 6, 59, 93,188,115, 33, -/* 0x04d0 */ 106, 0,106,255,104, 18, 16, 0, 0,255,117,196, 41, 93,188,255, -/* 0x04e0 */ 117,188, 83,232,192, 1, 0, 0,131,196, 24, 57,195,116, 33,235, -/* 0x04f0 */ 202,131,125,220, 0,116, 25,139, 69,192,131,192, 3, 37,255, 15, -/* 0x0500 */ 0, 0,131,248, 3,119, 9, 80, 83,232,215, 1, 0, 0, 89, 91, -/* 0x0510 */ 139, 85,224,131,199, 32,255, 69,200, 15,183, 66, 44, 57, 69,200, -/* 0x0520 */ 15,140, 14,254,255,255,131,125,220, 0,117, 15,255,117,228,232, -/* 0x0530 */ 173, 1, 0, 0, 90,133,192,116, 21,235,128,139, 69,224,102,131, -/* 0x0540 */ 120, 16, 3,116, 9,255,117,240,232,127, 1, 0, 0, 88,131,125, -/* 0x0550 */ 16, 0,116, 8,139, 69,208,139, 85, 16,137, 2,139, 85,224,139, -/* 0x0560 */ 82, 24, 1, 85,208,139, 69,208,141,101,244, 91, 94, 95,201,195, -/* 0x0570 */ 85,137,229, 87, 86, 83,131,236, 16,141, 85, 24,139, 69, 8,106, -/* 0x0580 */ 0,139,125, 28,137, 69,236,139, 69, 16,139, 93, 32,141,119, 52, -/* 0x0590 */ 137, 69,232,131,192, 2,255,117,232,137, 69,228,141, 69, 32,232, -/* 0x05a0 */ 209,251,255,255,139, 69, 12,185, 0, 16, 0, 0,186, 6, 0, 0, -/* 0x05b0 */ 0,137, 69, 32,139, 69,236, 41, 93, 36,232,147,252,255,255, 15, -/* 0x05c0 */ 183, 79, 44,139, 69,236,186, 5, 0, 0, 0,232,130,252,255,255, -/* 0x05d0 */ 15,183, 79, 42,139, 69,236,186, 4, 0, 0, 0,232,113,252,255, -/* 0x05e0 */ 255,139, 77, 40, 3, 78, 8,186, 3, 0, 0, 0,139, 69,236,131, -/* 0x05f0 */ 193, 52,232, 91,252,255,255,141, 69,240,255,117,228,137,250, 80, -/* 0x0600 */ 141, 69, 32,255,117,236, 80,139, 69,232,232,111,252,255,255,186, -/* 0x0610 */ 9, 0, 0, 0,137,193,137,195,139, 69,236,232, 50,252,255,255, -/* 0x0620 */ 102,139, 79, 44,131,196, 24, 49,210,102,133,201,116,112,131, 62, -/* 0x0630 */ 3,117, 96,106, 0,139, 69,240,106, 0, 3, 70, 8, 80,232,154, -/* 0x0640 */ 0, 0, 0,131,196, 12,133,192,137,195,120, 22,104, 0, 2, 0, -/* 0x0650 */ 0, 87, 80,232,125, 0, 0, 0,131,196, 12, 61, 0, 2, 0, 0, -/* 0x0660 */ 116, 7,106,127,232,100, 0, 0, 0,141, 69,240,137,250,106, 0, -/* 0x0670 */ 80,137,216,106, 0,106, 0,232, 2,252,255,255,139, 77,240,137, -/* 0x0680 */ 195,139, 69,236,186, 7, 0, 0, 0,232,196,251,255,255,131,196, -/* 0x0690 */ 16,235, 11, 66, 15,183,193,131,198, 32, 57,194,124,144,141,101, -/* 0x06a0 */ 244,137,216, 91, 94, 95,201,195, 85,137,229, 49,192, 80,255,117, -/* 0x06b0 */ 28, 80,255,117, 24,255,117, 20,255,117, 16,255,117, 12,255,117, -/* 0x06c0 */ 8, 80,176,197, 80, 80,176,198,205,128,201,195,195,176, 1, 15, -/* 0x06d0 */ 182,192,205,128,195,176, 3,235,246,176, 4,235,242,176, 5,235, -/* 0x06e0 */ 238,176, 6,235,234,176, 73,235,230,176, 74,235,226,176, 33,235, -/* 0x06f0 */ 222,176, 20,235,218,176, 92,235,214,176, 59,235,210,176, 2,235, -/* 0x0700 */ 206,176,130,235,202,176,116,235,198,176,240,235,194,176, 10,235, -/* 0x0710 */ 190,176, 7,235,186 +/* 0x0140 */ 95,195, 0, 0, 85,137,229, 87, 86,137,199, 83,137,206,139, 15, +/* 0x0150 */ 139, 64, 4, 57,241,137,195,114, 36,133,246,116, 15,137,241,138, +/* 0x0160 */ 3, 67,136, 2, 66,226,248,139, 71, 4,139, 15, 1,240, 41,241, +/* 0x0170 */ 137, 71, 4,137, 15,141,101,244, 91, 94, 95,201,195,106,127,232, +/* 0x0180 */ 25, 6, 0, 0, 85,137,229, 87, 86,137,198, 83,137,211,131,236, +/* 0x0190 */ 24,139, 58,139, 69, 8,133,255,137, 69,220, 15,132,153, 0, 0, +/* 0x01a0 */ 0,141,125,228,137,240,185, 12, 0, 0, 0,137,250,232,146,255, +/* 0x01b0 */ 255,255,139, 69,228,133,192, 15,132,203, 0, 0, 0,139, 77,232, +/* 0x01c0 */ 133,201, 15,132,201, 0, 0, 0, 57,193, 15,135,193, 0, 0, 0, +/* 0x01d0 */ 59, 3, 15,135,185, 0, 0, 0, 57,193,115,102,137, 69,224,141, +/* 0x01e0 */ 69,224,255,117,236, 80,255,115, 4, 81,255,118, 4,255, 85,220, +/* 0x01f0 */ 131,196, 20,133,192, 15,133,150, 0, 0, 0,139, 85,228, 59, 85, +/* 0x0200 */ 224, 15,133,138, 0, 0, 0,138, 69,237,132,192,116, 19,139, 77, +/* 0x0210 */ 12,133,201,116, 12,129,250, 0, 2, 0, 0,119, 75, 57, 19,116, +/* 0x0220 */ 71,139, 69,232, 1, 70, 4, 41, 6,139, 3, 1, 83, 4, 41,208, +/* 0x0230 */ 133,192,137, 3, 15,133,106,255,255,255,141,101,244, 91, 94, 95, +/* 0x0240 */ 201,195,139, 83, 4,137,240,232,248,254,255,255,139, 85,228,139, +/* 0x0250 */ 3, 1, 83, 4, 41,208,133,192,137, 3, 15,133, 68,255,255,255, +/* 0x0260 */ 141,101,244, 91, 94, 95,201,195, 15,182,192, 80, 15,182, 69,238, +/* 0x0270 */ 80, 82,255,115, 4,255, 85, 12,139, 69,232, 1, 70, 4,131,196, +/* 0x0280 */ 16, 41, 6,139, 85,228,235,161,129,125,232, 85, 80, 88, 33,116, +/* 0x0290 */ 7,106,127,232, 5, 5, 0, 0,139, 30,133,219,116,156,235,241, +/* 0x02a0 */ 133,192, 83,137,195,116, 33,168, 1,117, 29,139, 3, 57,208,116, +/* 0x02b0 */ 18,131,248, 1,116, 20,133,192,116, 14,131,195, 8,139, 3, 57, +/* 0x02c0 */ 208,117,238,137, 19,137, 75, 4, 91,195,133,210,117,245,131,195, +/* 0x02d0 */ 8,235,234, 85,137,229, 87, 86,190, 0, 0, 0, 0, 83,131,236, +/* 0x02e0 */ 64,137, 69,228,139, 69, 8,137, 85,224,139,125,224,199, 69,204, +/* 0x02f0 */ 255,255,255,255,139, 85, 12,137, 69,220,139, 69,224,139, 77, 20, +/* 0x0300 */ 137, 85,216, 3,127, 28,139, 85,224,137, 77,212,102,131,120, 16, +/* 0x0310 */ 2, 15,183, 74, 44,137,251, 15,148,192, 15,182,192,137,202,193, +/* 0x0320 */ 224, 4, 5, 2, 16, 0, 0, 74,120, 14,131, 59, 1, 15,132,209, +/* 0x0330 */ 0, 0, 0,131,195, 32,226,242,139, 93,204,106, 0,106,255,129, +/* 0x0340 */ 227, 0,240,255,255, 80, 41,222,106, 0,129,198,255, 15, 0, 0, +/* 0x0350 */ 129,230, 0,240,255,255, 86, 83,232, 27, 4, 0, 0,139, 77,224, +/* 0x0360 */ 141, 52, 48,131,196, 24,102,139, 81, 44, 41,216,137,117,240,190, +/* 0x0370 */ 0, 0, 0, 0,102,133,210,137, 69,208,117, 20,235, 69, 72, 15, +/* 0x0380 */ 132,156, 0, 0, 0, 70, 15,183,194,131,199, 32, 57,240,126, 51, +/* 0x0390 */ 139, 7,131,248, 6,117,231,139, 69,220,133,192,116,231,139, 77, +/* 0x03a0 */ 208,186, 3, 0, 0, 0, 3, 79, 8,139, 69,216,232,239,254,255, +/* 0x03b0 */ 255,139, 69,224, 70,131,199, 32,102,139, 80, 44, 15,183,194, 57, +/* 0x03c0 */ 240,127,205,139, 77,220,133,201, 15,132, 56, 2, 0, 0,139, 85, +/* 0x03d0 */ 224,102,131,122, 16, 3,116, 9,255,117,240,232,188, 3, 0, 0, +/* 0x03e0 */ 88,139, 69, 16,133,192,116, 8,139, 69,208,139, 77, 16,137, 1, +/* 0x03f0 */ 139, 85,224,139, 82, 24, 1, 85,208,139, 69,208,141,101,244, 91, +/* 0x0400 */ 94, 95,201,195,139, 83, 8, 59, 85,204,115, 3,137, 85,204, 3, +/* 0x0410 */ 83, 20, 57,242, 15,134, 25,255,255,255,137,214,233, 18,255,255, +/* 0x0420 */ 255,139, 95, 20,133,219, 15,132, 89,255,255,255,139, 69,208,199, +/* 0x0430 */ 69,200, 64, 98, 81,115, 3, 71, 8,139, 79, 24,139, 87, 16,131, +/* 0x0440 */ 225, 7, 1,195,193,225, 2,137, 93,188,211,109,200,137,193,139, +/* 0x0450 */ 93,220,129,225,255, 15, 0, 0,131,101,200, 7,137, 85,232, 1, +/* 0x0460 */ 202,137, 69,236, 41,200,133,219,137, 85,196,137, 69,192, 15,132, +/* 0x0470 */ 104, 1, 0, 0,106, 0,139, 69,200,106,255,104, 18, 16, 0, 0, +/* 0x0480 */ 131,200, 2, 80,137,208,131,192, 3, 80,255,117,192,232,230, 2, +/* 0x0490 */ 0, 0,131,196, 24, 59, 69,192, 15,133,204, 0, 0, 0,139, 77, +/* 0x04a0 */ 220,133,201,116, 31,246, 69,200, 4,139, 69,212,117, 5,184, 0, +/* 0x04b0 */ 0, 0, 0, 80,139, 69,220,255,117,228,141, 85,232,232,194,252, +/* 0x04c0 */ 255,255, 88, 90,139, 93,196,247,219,129,227,255, 15, 0, 0,246, +/* 0x04d0 */ 69,200, 2,116, 14,139, 69,192, 3, 69,196,133,219, 15,133,142, +/* 0x04e0 */ 0, 0, 0,139, 69,220,133,192,116, 30,131, 63, 1, 15,132,139, +/* 0x04f0 */ 0, 0, 0,255,117,200,255,117,196,255,117,192,232,184, 2, 0, +/* 0x0500 */ 0,131,196, 12,133,192,117, 98,139, 69,196, 1,216,139, 93,192, +/* 0x0510 */ 1,195, 59, 93,188,114, 48,139, 69,220,133,192,116, 29,139, 69, +/* 0x0520 */ 196,131,192, 3, 37,255, 15, 0, 0,131,248, 3, 15,135,127,254, +/* 0x0530 */ 255,255, 80, 83,232,124, 2, 0, 0, 91, 88,139, 77,224,102,139, +/* 0x0540 */ 81, 44,233, 62,254,255,255,106, 0,106,255,104, 18, 16, 0, 0, +/* 0x0550 */ 255,117,200, 41, 93,188,255,117,188, 83,232, 25, 2, 0, 0,131, +/* 0x0560 */ 196, 24, 57,216, 15,132, 71,254,255,255,106,127,232, 44, 2, 0, +/* 0x0570 */ 0,137,217,198, 0, 0, 64,226,250,233,101,255,255,255,246, 71, +/* 0x0580 */ 24, 1, 15,132,107,255,255,255,139, 87, 20,139, 79, 8,137, 77, +/* 0x0590 */ 184, 1,209,137, 77,180, 3, 77,208, 59, 87, 16,116,126,107, 69, +/* 0x05a0 */ 208, 52,139, 85,184,141, 76, 2, 12,139, 71, 4,133,192,117, 15, +/* 0x05b0 */ 139, 1, 61,205,128,201,195,116, 6,199, 1,205,128,201,195,133, +/* 0x05c0 */ 201, 15,132, 44,255,255,255,139, 69,216,186, 0, 0, 0, 0,131, +/* 0x05d0 */ 224,254,232,201,252,255,255,233, 23,255,255,255,139, 71, 4, 41, +/* 0x05e0 */ 200, 80,255,117,228,106, 18,255,117,200,255,117,196,255,117,192, +/* 0x05f0 */ 232,131, 1, 0, 0,131,196, 24, 59, 69,192, 15,132,195,254,255, +/* 0x0600 */ 255,233,100,255,255,255,255,117,228,232,163, 1, 0, 0, 90,133, +/* 0x0610 */ 192, 15,132,202,253,255,255,233, 78,255,255,255,137,200,247,216, +/* 0x0620 */ 37,255, 15, 0, 0,131,248, 3,119,134,233,111,255,255,255, 85, +/* 0x0630 */ 137,229, 87, 86, 83,131,236, 16,141, 85, 24,139, 69, 8,106, 0, +/* 0x0640 */ 139,117, 16,137, 69,236,139, 69, 28, 86,139, 93, 32,137, 69,228, +/* 0x0650 */ 137,199,141, 70, 2,131,199, 52,137, 69,232,141, 69, 32,232, 33, +/* 0x0660 */ 251,255,255,139, 69, 12,185, 0, 16, 0, 0,186, 6, 0, 0, 0, +/* 0x0670 */ 137, 69, 32,139, 69,236, 41, 93, 36,232, 34,252,255,255,139, 69, +/* 0x0680 */ 228,186, 5, 0, 0, 0, 15,183, 72, 44,139, 69,236,232, 14,252, +/* 0x0690 */ 255,255,139, 69,228,186, 4, 0, 0, 0, 15,183, 72, 42,139, 69, +/* 0x06a0 */ 236,232,250,251,255,255,139, 77, 40, 3, 79, 8,186, 3, 0, 0, +/* 0x06b0 */ 0,139, 69,236,131,193, 52,232,228,251,255,255,141, 69,240,255, +/* 0x06c0 */ 117,232, 80,139, 85,228,255,117,236,141, 69, 32, 80,137,240,232, +/* 0x06d0 */ 255,251,255,255,186, 9, 0, 0, 0,137,193,137,195,139, 69,236, +/* 0x06e0 */ 232,187,251,255,255,139, 69,228,131,196, 24,186, 0, 0, 0, 0, +/* 0x06f0 */ 102,139, 72, 44,102,133,201,116, 16,131, 63, 3,116, 21, 66, 15, +/* 0x0700 */ 183,193,131,199, 32, 57,208,127,240,141,101,244,137,216, 91, 94, +/* 0x0710 */ 95,201,195,106, 0,139, 69,240,106, 0, 3, 71, 8, 80,232,138, +/* 0x0720 */ 0, 0, 0,131,196, 12,133,192,137,195,120, 24,104, 0, 2, 0, +/* 0x0730 */ 0,255,117,228, 80,232,107, 0, 0, 0,131,196, 12, 61, 0, 2, +/* 0x0740 */ 0, 0,116, 7,106,127,232, 82, 0, 0, 0,141, 69,240,139, 85, +/* 0x0750 */ 228,106, 0, 80,137,216,106, 0,106, 0,232,116,251,255,255,139, +/* 0x0760 */ 77,240,137,195,139, 69,236,186, 7, 0, 0, 0,232, 47,251,255, +/* 0x0770 */ 255,131,196, 16,235,147, 0, 0, 85,137,229, 49,192, 80,255,117, +/* 0x0780 */ 28, 80,255,117, 24,255,117, 20,255,117, 16,255,117, 12,255,117, +/* 0x0790 */ 8, 80,176,197, 80, 80,176,198,205,128,201,195,195,176, 1, 15, +/* 0x07a0 */ 182,192,205,128,195,176, 3,235,246,176, 4,235,242,176, 5,235, +/* 0x07b0 */ 238,176, 6,235,234,176, 73,235,230,176, 74,235,226,176, 33,235, +/* 0x07c0 */ 222,176, 20,235,218,176, 92,235,214,176, 59,235,210,176, 2,235, +/* 0x07d0 */ 206,176,130,235,202,176,116,235,198,176,240,235,194,176, 10,235, +/* 0x07e0 */ 190,176, 7,235,186 }; diff --git a/src/stub/i386-bsd.elf.execve-fold.h b/src/stub/i386-bsd.elf.execve-fold.h index 39a8fe32..9a116a7c 100644 --- a/src/stub/i386-bsd.elf.execve-fold.h +++ b/src/stub/i386-bsd.elf.execve-fold.h @@ -33,8 +33,8 @@ /* clang-format off */ #define STUB_I386_BSD_ELF_EXECVE_FOLD_SIZE 1031 -#define STUB_I386_BSD_ELF_EXECVE_FOLD_ADLER32 0x73c799a0 -#define STUB_I386_BSD_ELF_EXECVE_FOLD_CRC32 0xef2fbdb2 +#define STUB_I386_BSD_ELF_EXECVE_FOLD_ADLER32 0x978c9983 +#define STUB_I386_BSD_ELF_EXECVE_FOLD_CRC32 0x28f950a1 unsigned char stub_i386_bsd_elf_execve_fold[1031] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, @@ -46,53 +46,53 @@ unsigned char stub_i386_bsd_elf_execve_fold[1031] = { /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 88,137,225,141, 84,132, 4,139,123, 24,141,179,128, 0, 0, 0, -/* 0x0090 */ 41,247,141, 93, 2, 96,232,184, 0, 0, 0,244, 83,137,195,139, +/* 0x0090 */ 41,247,141, 93, 2, 96,232,188, 0, 0, 0,244, 83,137,195,139, /* 0x00a0 */ 76, 36, 8,136,208,131,224, 31, 60, 25,118, 3,131,232, 43,131, /* 0x00b0 */ 192, 65, 75,136, 3,137,208,193,232, 5,137,194,226,229, 91,195, -/* 0x00c0 */ 85,137,229, 87, 86, 83,131,236, 32,106, 0,106, 0,255,117, 8, -/* 0x00d0 */ 232,212, 2, 0, 0,131,196, 12,133,192,137,198,120,105,141, 93, -/* 0x00e0 */ 218,199, 69,212, 47,112,114,111,199, 69,216, 99, 47, 0, 0,232, -/* 0x00f0 */ 201, 2, 0, 0,137,218,141,125,212,232,230, 2, 0, 0,141, 80, -/* 0x0100 */ 4,199, 0, 47,102,100, 47,137,240,232,214, 2, 0, 0,106, 5, -/* 0x0110 */ 87,232,163, 2, 0, 0, 90, 61, 85, 80, 88, 50, 89,117, 33,255, -/* 0x0120 */ 117, 8,232,178, 2, 0, 0,106, 1,106, 2, 86,232,144, 2, 0, -/* 0x0130 */ 0,255,117, 16,255,117, 12, 87,232,136, 2, 0, 0,131,196, 28, -/* 0x0140 */ 86,232,103, 2, 0, 0, 88,141,101,244,137,240, 91, 94, 95,201, -/* 0x0150 */ 194, 12, 0, 85,137,229, 87, 86, 83,131,236, 92,141,125,228,139, -/* 0x0160 */ 69, 16,139,117, 12,137, 69,156,165,165,165,131,109, 8, 12,129, -/* 0x0170 */ 125,228, 85, 80, 88, 51,137,117, 12, 15,133,110, 1, 0, 0,141, -/* 0x0180 */ 93,215,199, 69,196, 47,116,109,112,199, 69,200, 47,117,112,120, -/* 0x0190 */ 232, 40, 2, 0, 0,137,194,106, 4,137,216,141,117,211,232,249, -/* 0x01a0 */ 254,255,255,106, 0,137,195,141, 69,172, 51, 93,228,198, 69,215, -/* 0x01b0 */ 0, 80,232, 26, 2, 0, 0, 51, 93,172,139, 69,176,106, 7,193, -/* 0x01c0 */ 224, 12, 49,195,137,240,137,218,232,207,254,255,255,141, 69,196, -/* 0x01d0 */ 80,232, 3, 2, 0, 0,131,196, 20,131,248,254,116, 8,133,192, -/* 0x01e0 */ 15,133, 7, 1, 0, 0,104,192, 1, 0, 0,141, 85,196,104,194, -/* 0x01f0 */ 0, 0, 0, 82,232,176, 1, 0, 0,255,117,232, 80,137, 69,152, -/* 0x0200 */ 232,200, 1, 0, 0,131,196, 20,133,192, 15,133,211, 0, 0, 0, -/* 0x0210 */ 106, 0,255,117,152,106, 1,106, 3,255,117,232,106, 0,232, 81, -/* 0x0220 */ 1, 0, 0,131,196, 24, 61, 0,240,255,255,137,195, 15,135,176, -/* 0x0230 */ 0, 0, 0,139, 69,232,106, 0,106,255, 5,255, 15, 0, 0,104, -/* 0x0240 */ 18, 16, 0, 0, 37, 0,240,255,255,106, 3,141, 4, 3,104, 0, -/* 0x0250 */ 16, 0, 0, 80,232, 27, 1, 0, 0,131,196, 24,141,125,180,139, -/* 0x0260 */ 117, 12,165,165,165,139, 77,180,131,109, 8, 12,133,201,137,117, -/* 0x0270 */ 12,139, 85,184,117, 16,129,250, 85, 80, 88, 33,117,101,131,125, -/* 0x0280 */ 232, 0,116,109,235, 93, 57,202,119, 89, 59, 85,236,119, 84, 57, -/* 0x0290 */ 202,115, 35,141, 69,168,255,117,188, 80, 83, 82,255,117, 12,137, -/* 0x02a0 */ 77,168,255, 85,156,131,196, 20,133,192,117, 55,139, 69,180, 57, -/* 0x02b0 */ 69,168,117, 47,235, 7,137,223,139,117, 12,243,164,255,117,180, -/* 0x02c0 */ 83,232,235, 0, 0, 0,139, 69,180, 41, 69,232, 1,195,139, 69, -/* 0x02d0 */ 184, 41, 69, 8, 1, 69, 12,131,125, 8, 0, 95, 88, 15,137,121, -/* 0x02e0 */ 255,255,255,141, 69,196, 80,232,237, 0, 0, 0, 94,106,127,235, -/* 0x02f0 */ 89,255,117,152,232,180, 0, 0, 0, 91,133,192,117,229,255,117, -/* 0x0300 */ 28,255,117, 32,141, 85,196, 82,232,179,253,255,255,133,192,120, -/* 0x0310 */ 210,232,179, 0, 0, 0,133,192,117, 53,232,170, 0, 0, 0,133, -/* 0x0320 */ 192,117, 37,141, 69,160,106, 0,141,117,196, 80,199, 69,160, 85, -/* 0x0330 */ 80, 88, 52,199, 69,164, 0, 0, 0, 0,232,150, 0, 0, 0, 86, -/* 0x0340 */ 232,148, 0, 0, 0,131,196, 12,106, 0,232, 74, 0, 0, 0,106, -/* 0x0350 */ 0,106, 0,106,255,232,131, 0, 0, 0,255,117, 28,255,117, 32, -/* 0x0360 */ 141, 69,196, 80,232, 92, 0, 0, 0,131,196, 24,233,114,255,255, -/* 0x0370 */ 255, 0, 0, 0, 85,137,229, 49,192, 80,255,117, 28, 80,255,117, +/* 0x00c0 */ 85,137,229, 87, 86, 83,131,236, 32,106, 0,139,125, 8,106, 0, +/* 0x00d0 */ 87,232,211, 2, 0, 0,131,196, 12,133,192,137,198,120, 72,141, +/* 0x00e0 */ 93,218,199, 69,212, 47,112,114,111,199, 69,216, 99, 47, 0, 0, +/* 0x00f0 */ 232,200, 2, 0, 0,137,218,232,232, 2, 0, 0,141, 80, 4,199, +/* 0x0100 */ 0, 47,102,100, 47,137,240,232,216, 2, 0, 0,141, 69,212,106, +/* 0x0110 */ 5, 80,232,162, 2, 0, 0, 90, 61, 85, 80, 88, 50, 89,116, 19, +/* 0x0120 */ 86,232,135, 2, 0, 0, 88,141,101,244,137,240, 91, 94, 95,201, +/* 0x0130 */ 194, 12, 0, 87,232,160, 2, 0, 0,106, 1,106, 2, 86,232,126, +/* 0x0140 */ 2, 0, 0,255,117, 16,255,117, 12,141, 69,212, 80,232,115, 2, +/* 0x0150 */ 0, 0,131,196, 28,235,201, 85,137,229, 87, 86, 83,131,236, 92, +/* 0x0160 */ 141,125,228,139, 69, 16,139,117, 12,137, 69,156,165,165,165,131, +/* 0x0170 */ 109, 8, 12,129,125,228, 85, 80, 88, 51,137,117, 12, 15,133, 90, +/* 0x0180 */ 1, 0, 0,141, 93,215,199, 69,196, 47,116,109,112,199, 69,200, +/* 0x0190 */ 47,117,112,120,232, 36, 2, 0, 0,137,194,106, 4,137,216,141, +/* 0x01a0 */ 117,211,232,245,254,255,255,106, 0,137,195,141, 69,172, 51, 93, +/* 0x01b0 */ 228,198, 69,215, 0, 80,232, 22, 2, 0, 0, 51, 93,172,139, 69, +/* 0x01c0 */ 176,106, 7,193,224, 12, 49,195,137,240,137,218,232,203,254,255, +/* 0x01d0 */ 255,141, 69,196, 80,232,255, 1, 0, 0,131,196, 20,131,248,254, +/* 0x01e0 */ 116, 8,133,192, 15,133,243, 0, 0, 0,104,192, 1, 0, 0,141, +/* 0x01f0 */ 85,196,104,194, 0, 0, 0, 82,232,172, 1, 0, 0,255,117,232, +/* 0x0200 */ 80,137, 69,152,232,196, 1, 0, 0,131,196, 20,133,192, 15,133, +/* 0x0210 */ 191, 0, 0, 0,106, 0,255,117,152,106, 1,106, 3,255,117,232, +/* 0x0220 */ 106, 0,232, 77, 1, 0, 0,131,196, 24, 61, 0,240,255,255,137, +/* 0x0230 */ 195, 15,135,156, 0, 0, 0,106, 0,139, 69,232,106,255,104, 18, +/* 0x0240 */ 16, 0, 0, 5,255, 15, 0, 0,106, 3, 37, 0,240,255,255,104, +/* 0x0250 */ 0, 16, 0, 0, 1,216, 80,232, 24, 1, 0, 0,131,196, 24,235, +/* 0x0260 */ 42,137,223,139,117, 12,243,164,255,117,180, 83,232, 64, 1, 0, +/* 0x0270 */ 0,139, 69,180, 41, 69,232, 1,195,139, 69,184, 41, 69, 8,139, +/* 0x0280 */ 125, 8, 1, 69, 12, 88,133,255, 90,120, 72,141,125,180,139,117, +/* 0x0290 */ 12,165,165,165,139, 77,180,131,109, 8, 12,133,201,137,117, 12, +/* 0x02a0 */ 116, 66,139, 85,184, 57,202,119, 42, 59, 85,236,119, 37, 57,202, +/* 0x02b0 */ 115,175,141, 69,168,255,117,188, 80, 83, 82,255,117, 12,137, 77, +/* 0x02c0 */ 168,255, 85,156,131,196, 20,133,192,117, 8,139, 69,168, 57, 69, +/* 0x02d0 */ 180,116,149,141, 69,196, 80,232,253, 0, 0, 0, 94,106,127,232, +/* 0x02e0 */ 181, 0, 0, 0,129,125,184, 85, 80, 88, 33,117,230,139, 77,232, +/* 0x02f0 */ 133,201,117,223,255,117,152,232,177, 0, 0, 0, 91,133,192,117, +/* 0x0300 */ 210,255,117, 28,255,117, 32,141, 85,196, 82,232,176,253,255,255, +/* 0x0310 */ 133,192,120,191,232,176, 0, 0, 0,133,192,116, 31,106, 0,106, +/* 0x0320 */ 0,106,255,232,181, 0, 0, 0,255,117, 28,255,117, 32,141, 69, +/* 0x0330 */ 196, 80,232,142, 0, 0, 0,131,196, 24,235,151,232,136, 0, 0, +/* 0x0340 */ 0,133,192,117, 37,141, 69,160,106, 0,141,117,196, 80,199, 69, +/* 0x0350 */ 160, 85, 80, 88, 52,199, 69,164, 0, 0, 0, 0,232,116, 0, 0, +/* 0x0360 */ 0, 86,232,114, 0, 0, 0,131,196, 12,106, 0,232, 40, 0, 0, +/* 0x0370 */ 0, 0, 0, 0, 85,137,229, 49,192, 80,255,117, 28, 80,255,117, /* 0x0380 */ 24,255,117, 20,255,117, 16,255,117, 12,255,117, 8, 80,176,197, /* 0x0390 */ 80, 80,176,198,205,128,201,195,195,176, 1, 15,182,192,205,128, /* 0x03a0 */ 195,176, 3,235,246,176, 4,235,242,176, 5,235,238,176, 6,235, diff --git a/src/stub/i386-linux.elf-entry.h b/src/stub/i386-linux.elf-entry.h index f8dd3667..98a692c3 100644 --- a/src/stub/i386-linux.elf-entry.h +++ b/src/stub/i386-linux.elf-entry.h @@ -1,5 +1,5 @@ /* i386-linux.elf-entry.h - created from i386-linux.elf-entry.bin, 30381 (0x76ad) bytes + created from i386-linux.elf-entry.bin, 3513 (0xdb9) bytes This file is part of the UPX executable compressor. @@ -32,1908 +32,229 @@ /* clang-format off */ -#define STUB_I386_LINUX_ELF_ENTRY_SIZE 30381 -#define STUB_I386_LINUX_ELF_ENTRY_ADLER32 0x1a21bc51 -#define STUB_I386_LINUX_ELF_ENTRY_CRC32 0xc7512823 +#define STUB_I386_LINUX_ELF_ENTRY_SIZE 3513 +#define STUB_I386_LINUX_ELF_ENTRY_ADLER32 0x52efefce +#define STUB_I386_LINUX_ELF_ENTRY_CRC32 0x49fefa34 -unsigned char stub_i386_linux_elf_entry[30381] = { +unsigned char stub_i386_linux_elf_entry[3513] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0020 */ 100, 34, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, -/* 0x0030 */ 0, 0, 0, 0, 80,232,100, 0, 0, 0, 96,139,116, 36, 36,139, -/* 0x0040 */ 124, 36, 44,131,205,255,235, 3,164,235, 3,138, 6, 70,136, 7, -/* 0x0050 */ 71, 1,219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, -/* 0x0060 */ 64,138, 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30, -/* 0x0070 */ 131,238,252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, -/* 0x0080 */ 17,219,115,255, 1,219,115,255,117, 9,139, 30,131,238,252, 17, -/* 0x0090 */ 219,115,255, 49,201,131,232, 3,114, 13,193,224, 8,138, 6, 70, -/* 0x00a0 */ 131,240,255,116,255,137,197, 1,219,117, 7,139, 30,131,238,252, -/* 0x00b0 */ 17,219, 17,201, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, -/* 0x00c0 */ 201,117,255, 65, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, -/* 0x00d0 */ 201, 1,219,117, 7,139, 30,131,238,252, 17,219,115, 48, 1,219, -/* 0x00e0 */ 115, 48,117, 9,139, 30,131,238,252, 17,219,115, 48, 65, 65,131, -/* 0x00f0 */ 193, 2,129,253, 0,243,255,255,131,209, 1, 86,141, 52, 47,243, -/* 0x0100 */ 164, 94,233,252,255,255,255,141, 20, 47,131,253,252,138, 4, 15, -/* 0x0110 */ 118,255,138, 2, 66,136, 7, 71, 73,117,247,233,252,255,255,255, -/* 0x0120 */ 139, 2,131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1, -/* 0x0130 */ 207,233,252,255,255,255,235, 3,164,235, 3,138, 6, 70,136, 7, -/* 0x0140 */ 71, 1,219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, -/* 0x0150 */ 64,138, 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30, -/* 0x0160 */ 131,238,252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, -/* 0x0170 */ 17,219,114, 15, 1,219,115, 11,117, 15,139, 30,131,238,252, 17, -/* 0x0180 */ 219,114, 15, 72, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, -/* 0x0190 */ 192,235,255, 49,201,131,232, 3,114, 17,193,224, 8,138, 6, 70, -/* 0x01a0 */ 131,240,255,116,255,209,248,137,197,235, 11, 1,219,117, 7,139, -/* 0x01b0 */ 30,131,238,252, 17,219, 17,201, 1,219,117, 7,139, 30,131,238, -/* 0x01c0 */ 252, 17,219, 17,201,117,255, 65, 1,219,117, 7,139, 30,131,238, -/* 0x01d0 */ 252, 17,219, 17,201, 1,219,117, 7,139, 30,131,238,252, 17,219, -/* 0x01e0 */ 115, 68, 1,219,115, 68,117, 9,139, 30,131,238,252, 17,219,115, -/* 0x01f0 */ 68, 65, 65,131,193, 2,129,253, 0,251,255,255,131,209, 1, 86, -/* 0x0200 */ 141, 52, 47,243,164, 94,233,252,255,255,255,141, 20, 47,131,253, -/* 0x0210 */ 252,138, 4, 15,118,255,138, 2, 66,136, 7, 71, 73,117,247,233, -/* 0x0220 */ 252,255,255,255,139, 2,131,194, 4,137, 7,131,199, 4,131,233, -/* 0x0230 */ 4,119,241, 1,207,233,252,255,255,255,235, 3,164,235, 3,138, -/* 0x0240 */ 6, 70,136, 7, 71, 1,219,117, 7,139, 30,131,238,252, 17,219, -/* 0x0250 */ 114, 1, 49,192, 64,138, 7,114,255,184, 1, 0, 0, 0, 1,219, -/* 0x0260 */ 117, 7,139, 30,131,238,252, 17,219, 17,192, 1,219,117, 7,139, -/* 0x0270 */ 30,131,238,252, 17,219,114, 30, 1,219,115, 11,117, 30,139, 30, -/* 0x0280 */ 131,238,252, 17,219,114, 30, 72, 1,219,117, 7,139, 30,131,238, -/* 0x0290 */ 252, 17,219, 17,192,235,255, 1,219,117, 7,139, 30,131,238,252, -/* 0x02a0 */ 17,219, 17,201,235,255, 49,201,131,232, 3,114, 17,193,224, 8, -/* 0x02b0 */ 138, 6, 70,131,240,255,116,255,209,248,137,197,235, 11, 1,219, -/* 0x02c0 */ 117, 7,139, 30,131,238,252, 17,219,114,204, 65, 1,219,117, 7, -/* 0x02d0 */ 139, 30,131,238,252, 17,219,114,190, 1,219,117, 7,139, 30,131, -/* 0x02e0 */ 238,252, 17,219, 17,201, 1,219,117, 7,139, 30,131,238,252, 17, -/* 0x02f0 */ 219,115, 81, 1,219,115, 81,117, 9,139, 30,131,238,252, 17,219, -/* 0x0300 */ 115, 81, 65, 65,131,193, 2,129,253, 0,251,255,255,131,209, 2, -/* 0x0310 */ 86,141, 52, 47,243,164, 94,233,252,255,255,255,141, 20, 47,131, -/* 0x0320 */ 253,252,138, 4, 15,118,255,138, 2, 66,136, 7, 71, 73,117,247, -/* 0x0330 */ 233,252,255,255,255,139, 2,131,194, 4,137, 7,131,199, 4,131, -/* 0x0340 */ 233, 4,119,241, 1,207,233,252,255,255,255,137,229,141,156, 36, -/* 0x0350 */ 0, 0, 0, 0, 49,192, 80, 57,220,117,251, 70, 70, 83,104, 0, -/* 0x0360 */ 0, 0, 0, 87,131,195, 4, 83,104, 0, 0, 0, 0, 86,131,195, -/* 0x0370 */ 4, 83, 80,199, 3, 0, 0, 0, 0,137,229,139, 85, 40,172, 74, -/* 0x0380 */ 136,193, 36, 7,192,233, 3,187, 0,253,255,255,211,227,141,164, -/* 0x0390 */ 92,144,241,255,255,131,228,224,106, 0,106, 0,137,227, 83,131, -/* 0x03a0 */ 195, 4,139, 77, 48,255, 49, 87, 83,131,195, 4,136, 67, 2,172, -/* 0x03b0 */ 74,136,193, 36, 15,136, 3,192,233, 4,136, 75, 1, 82, 86, 83, -/* 0x03c0 */ 80, 85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, -/* 0x03d0 */ 68, 36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, -/* 0x03e0 */ 0, 0, 0,141, 66, 4,137, 68, 36,120,184, 1, 0, 0, 0, 15, -/* 0x03f0 */ 182, 74, 2,137,195,211,227,137,217, 73,137, 76, 36,108, 15,182, -/* 0x0400 */ 74, 1,211,224, 72,137, 68, 36,104,139,132, 36,168, 0, 0, 0, -/* 0x0410 */ 15,182, 50,199, 69, 0, 0, 0, 0, 0,199, 68, 36, 96, 0, 0, -/* 0x0420 */ 0, 0,199, 0, 0, 0, 0, 0,184, 0, 3, 0, 0,137,116, 36, -/* 0x0430 */ 100,199, 68, 36, 92, 1, 0, 0, 0,199, 68, 36, 88, 1, 0, 0, -/* 0x0440 */ 0,199, 68, 36, 84, 1, 0, 0, 0,199, 68, 36, 80, 1, 0, 0, -/* 0x0450 */ 0, 15,182, 74, 1, 1,241,211,224,141,136, 54, 7, 0, 0, 57, -/* 0x0460 */ 76, 36,116,115, 14,139, 68, 36,120,102,199, 0, 0, 4,131,192, -/* 0x0470 */ 2,226,246,139,156, 36,148, 0, 0, 0, 49,255,199, 68, 36, 72, -/* 0x0480 */ 255,255,255,255,137,218, 3,148, 36,152, 0, 0, 0,137, 84, 36, -/* 0x0490 */ 76, 49,210, 59, 92, 36, 76, 15,132,124, 9, 0, 0, 15,182, 3, -/* 0x04a0 */ 193,231, 8, 66, 67, 9,199,131,250, 4,126,231,139,140, 36,164, -/* 0x04b0 */ 0, 0, 0, 57, 76, 36,116, 15,131,100, 9, 0, 0,139,116, 36, -/* 0x04c0 */ 116, 35,116, 36,108,139, 68, 36, 96,139, 84, 36,120,193,224, 4, -/* 0x04d0 */ 137,116, 36, 68, 1,240,129,124, 36, 72,255,255,255, 0,141, 44, -/* 0x04e0 */ 66,119, 24, 59, 92, 36, 76, 15,132, 44, 9, 0, 0,193,100, 36, -/* 0x04f0 */ 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102, -/* 0x0500 */ 139, 85, 0,193,232, 11, 15,183,202, 15,175,193, 57,199, 15,131, -/* 0x0510 */ 221, 1, 0, 0,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,138, -/* 0x0520 */ 76, 36,100,193,248, 5,190, 1, 0, 0, 0,141, 4, 2, 15,182, -/* 0x0530 */ 84, 36,115,102,137, 69, 0,139, 68, 36,116, 35, 68, 36,104,139, -/* 0x0540 */ 108, 36,120,211,224,185, 8, 0, 0, 0, 43, 76, 36,100,211,250, -/* 0x0550 */ 1,208,105,192, 0, 6, 0, 0,131,124, 36, 96, 6,141,132, 5, -/* 0x0560 */ 108, 14, 0, 0,137, 68, 36, 20, 15,142,202, 0, 0, 0,139, 68, -/* 0x0570 */ 36,116, 43, 68, 36, 92,139,148, 36,160, 0, 0, 0, 15,182, 4, -/* 0x0580 */ 2,137, 68, 36, 64,209,100, 36, 64,139, 76, 36, 64,141, 20, 54, -/* 0x0590 */ 139,108, 36, 20,129,225, 0, 1, 0, 0,129,124, 36, 72,255,255, -/* 0x05a0 */ 255, 0,141, 68, 77, 0,137, 76, 36, 60,141, 44, 16,119, 24, 59, -/* 0x05b0 */ 92, 36, 76, 15,132, 96, 8, 0, 0,193,100, 36, 72, 8, 15,182, -/* 0x05c0 */ 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139,141, 0, 2, -/* 0x05d0 */ 0, 0,193,232, 11, 15,183,241, 15,175,198, 57,199,115, 35,137, -/* 0x05e0 */ 68, 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193,248, 5,131, -/* 0x05f0 */ 124, 36, 60, 0,141, 4, 1,102,137,133, 0, 2, 0, 0,116, 34, -/* 0x0600 */ 235, 46, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, -/* 0x0610 */ 5,102, 41,193,131,124, 36, 60, 0,102,137,141, 0, 2, 0, 0, -/* 0x0620 */ 116, 14,129,254,255, 0, 0, 0, 15,142, 87,255,255,255,235,121, -/* 0x0630 */ 129,254,255, 0, 0, 0,127,113,141, 20, 54,139,108, 36, 20, 1, -/* 0x0640 */ 213,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15, -/* 0x0650 */ 132,196, 7, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, -/* 0x0660 */ 67, 9,199,139, 68, 36, 72,102,139, 77, 0,193,232, 11, 15,183, -/* 0x0670 */ 241, 15,175,198, 57,199,115, 25,137, 68, 36, 72,184, 0, 8, 0, -/* 0x0680 */ 0, 41,240,137,214,193,248, 5,141, 4, 1,102,137, 69, 0,235, -/* 0x0690 */ 159, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5, -/* 0x06a0 */ 102, 41,193,102,137, 77, 0,235,135,139, 84, 36,116,137,240,139, -/* 0x06b0 */ 140, 36,160, 0, 0, 0,136, 68, 36,115,136, 4, 10, 66,131,124, -/* 0x06c0 */ 36, 96, 3,137, 84, 36,116,127, 13,199, 68, 36, 96, 0, 0, 0, -/* 0x06d0 */ 0,233, 27, 7, 0, 0,131,124, 36, 96, 9,127, 10,131,108, 36, -/* 0x06e0 */ 96, 3,233, 10, 7, 0, 0,131,108, 36, 96, 6,233, 0, 7, 0, -/* 0x06f0 */ 0,139, 76, 36, 72, 41,199,139,116, 36, 96, 41,193,137,208,102, -/* 0x0700 */ 193,232, 5,102, 41,194,129,249,255,255,255, 0,102,137, 85, 0, -/* 0x0710 */ 139,108, 36,120,141,116,117, 0,137,116, 36, 56,119, 22, 59, 92, -/* 0x0720 */ 36, 76, 15,132,241, 6, 0, 0, 15,182, 3,193,231, 8,193,225, -/* 0x0730 */ 8, 67, 9,199,139,108, 36, 56,137,200,193,232, 11,102,139,149, -/* 0x0740 */ 128, 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 82,137,198, -/* 0x0750 */ 184, 0, 8, 0, 0, 41,232,139,108, 36, 88,193,248, 5,139, 76, -/* 0x0760 */ 36, 84,141, 4, 2,139, 84, 36, 56,137, 76, 36, 80,139, 76, 36, -/* 0x0770 */ 120,102,137,130,128, 1, 0, 0,139, 68, 36, 92,137,108, 36, 84, -/* 0x0780 */ 137, 68, 36, 88, 49,192,131,124, 36, 96, 6, 15,159,192,129,193, -/* 0x0790 */ 100, 6, 0, 0,141, 4, 64,137, 68, 36, 96,233,116, 2, 0, 0, -/* 0x07a0 */ 137,206, 41,199, 41,198,137,208,102,193,232, 5,139, 76, 36, 56, -/* 0x07b0 */ 102, 41,194,129,254,255,255,255, 0,102,137,145,128, 1, 0, 0, -/* 0x07c0 */ 119, 22, 59, 92, 36, 76, 15,132, 77, 6, 0, 0, 15,182, 3,193, -/* 0x07d0 */ 231, 8,193,230, 8, 67, 9,199,139,108, 36, 56,137,242,193,234, -/* 0x07e0 */ 11,102,139,141,152, 1, 0, 0, 15,183,193, 15,175,208, 57,215, -/* 0x07f0 */ 15,131,227, 0, 0, 0,189, 0, 8, 0, 0,137,214, 41,197,199, -/* 0x0800 */ 68, 36, 52, 0, 8, 0, 0,137,232,193,248, 5,141, 4, 1,139, -/* 0x0810 */ 76, 36, 56,102,137,129,152, 1, 0, 0,139, 68, 36, 96,139, 76, -/* 0x0820 */ 36, 68,193,224, 5, 3, 68, 36,120,129,250,255,255,255, 0,141, -/* 0x0830 */ 44, 72,119, 22, 59, 92, 36, 76, 15,132,219, 5, 0, 0, 15,182, -/* 0x0840 */ 3,193,231, 8,193,230, 8, 67, 9,199,102,139,149,224, 1, 0, -/* 0x0850 */ 0,137,240,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 96, -/* 0x0860 */ 41, 76, 36, 52,193,124, 36, 52, 5,139,116, 36, 52,137, 68, 36, -/* 0x0870 */ 72,131,124, 36,116, 0,141, 4, 50,102,137,133,224, 1, 0, 0, -/* 0x0880 */ 15,132,147, 5, 0, 0, 49,192,131,124, 36, 96, 6,139,172, 36, -/* 0x0890 */ 160, 0, 0, 0,139, 84, 36,116, 15,159,192,141, 68, 0, 9,137, -/* 0x08a0 */ 68, 36, 96,139, 68, 36,116, 43, 68, 36, 92,138, 68, 5, 0,136, -/* 0x08b0 */ 68, 36,115,136, 4, 42, 66,137, 84, 36,116,233, 49, 5, 0, 0, -/* 0x08c0 */ 41,198, 41,199,137,208,102,193,232, 5,102, 41,194,102,137,149, -/* 0x08d0 */ 224, 1, 0, 0,233, 31, 1, 0, 0,137,200, 41,214,102,193,232, -/* 0x08e0 */ 5,139,108, 36, 56,102, 41,193, 41,215,129,254,255,255,255, 0, -/* 0x08f0 */ 102,137,141,152, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, 22, -/* 0x0900 */ 5, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,139, -/* 0x0910 */ 76, 36, 56,137,240,193,232, 11,102,139,145,176, 1, 0, 0, 15, -/* 0x0920 */ 183,202, 15,175,193, 57,199,115, 35,137,198,184, 0, 8, 0, 0, -/* 0x0930 */ 41,200,139,108, 36, 56,193,248, 5,141, 4, 2,102,137,133,176, -/* 0x0940 */ 1, 0, 0,139, 68, 36, 88,233,160, 0, 0, 0,137,241, 41,199, -/* 0x0950 */ 41,193,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56,129, -/* 0x0960 */ 249,255,255,255, 0,102,137,144,176, 1, 0, 0,119, 22, 59, 92, -/* 0x0970 */ 36, 76, 15,132,161, 4, 0, 0, 15,182, 3,193,231, 8,193,225, -/* 0x0980 */ 8, 67, 9,199,139,116, 36, 56,137,200,193,232, 11,102,139,150, -/* 0x0990 */ 200, 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 32,137,198, -/* 0x09a0 */ 184, 0, 8, 0, 0, 41,232,139,108, 36, 56,193,248, 5,141, 4, -/* 0x09b0 */ 2,102,137,133,200, 1, 0, 0,139, 68, 36, 84,235, 38,137,206, -/* 0x09c0 */ 41,199, 41,198,137,208,102,193,232, 5,102, 41,194,139, 68, 36, -/* 0x09d0 */ 56,102,137,144,200, 1, 0, 0,139, 84, 36, 84,139, 68, 36, 80, -/* 0x09e0 */ 137, 84, 36, 80,139, 76, 36, 88,137, 76, 36, 84,139,108, 36, 92, -/* 0x09f0 */ 137, 68, 36, 92,137,108, 36, 88, 49,192,131,124, 36, 96, 6,139, -/* 0x0a00 */ 76, 36,120, 15,159,192,129,193,104, 10, 0, 0,141, 68, 64, 8, -/* 0x0a10 */ 137, 68, 36, 96,129,254,255,255,255, 0,119, 22, 59, 92, 36, 76, -/* 0x0a20 */ 15,132,243, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, -/* 0x0a30 */ 9,199,102,139, 17,137,240,193,232, 11, 15,183,234, 15,175,197, -/* 0x0a40 */ 57,199,115, 47,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193, -/* 0x0a50 */ 100, 36, 68, 4,193,248, 5,199, 68, 36, 44, 0, 0, 0, 0,141, -/* 0x0a60 */ 4, 2,102,137, 1,139, 68, 36, 68,141, 76, 1, 4,137, 76, 36, -/* 0x0a70 */ 16,235,114, 41,198, 41,199,137,208,102,193,232, 5,102, 41,194, -/* 0x0a80 */ 129,254,255,255,255, 0,102,137, 17,119, 22, 59, 92, 36, 76, 15, -/* 0x0a90 */ 132,132, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9, -/* 0x0aa0 */ 199,102,139, 81, 2,137,240,193,232, 11, 15,183,234, 15,175,197, -/* 0x0ab0 */ 57,199,115, 59,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193, -/* 0x0ac0 */ 100, 36, 68, 4,193,248, 5,199, 68, 36, 44, 8, 0, 0, 0,141, -/* 0x0ad0 */ 4, 2,139, 84, 36, 68,102,137, 65, 2,141,140, 17, 4, 1, 0, -/* 0x0ae0 */ 0,137, 76, 36, 16,199, 68, 36, 48, 3, 0, 0, 0,235, 47, 41, -/* 0x0af0 */ 198, 41,199,137,208,137,116, 36, 72,102,193,232, 5,199, 68, 36, -/* 0x0b00 */ 44, 16, 0, 0, 0,102, 41,194,199, 68, 36, 48, 8, 0, 0, 0, -/* 0x0b10 */ 102,137, 81, 2,129,193, 4, 2, 0, 0,137, 76, 36, 16,139, 76, -/* 0x0b20 */ 36, 48,186, 1, 0, 0, 0,137, 76, 36, 40,141, 44, 18,139,116, -/* 0x0b30 */ 36, 16, 1,238,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, -/* 0x0b40 */ 36, 76, 15,132,209, 2, 0, 0,193,100, 36, 72, 8, 15,182, 3, -/* 0x0b50 */ 193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22,193,232, 11, -/* 0x0b60 */ 15,183,202, 15,175,193, 57,199,115, 24,137, 68, 36, 72,184, 0, -/* 0x0b70 */ 8, 0, 0, 41,200,193,248, 5,141, 4, 2,137,234,102,137, 6, -/* 0x0b80 */ 235, 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5,102, 41, -/* 0x0b90 */ 194,102,137, 22,141, 85, 1,139,116, 36, 40, 78,137,116, 36, 40, -/* 0x0ba0 */ 117,137,138, 76, 36, 48,184, 1, 0, 0, 0,211,224, 41,194, 3, -/* 0x0bb0 */ 84, 36, 44,131,124, 36, 96, 3,137, 84, 36, 12, 15,143,231, 1, -/* 0x0bc0 */ 0, 0,131, 68, 36, 96, 7,131,250, 3,137,208,126, 5,184, 3, -/* 0x0bd0 */ 0, 0, 0,139,116, 36,120,193,224, 7,199, 68, 36, 36, 6, 0, -/* 0x0be0 */ 0, 0,141,132, 6, 96, 3, 0, 0,137, 68, 36, 8,184, 1, 0, -/* 0x0bf0 */ 0, 0,141, 44, 0,139,116, 36, 8, 1,238,129,124, 36, 72,255, -/* 0x0c00 */ 255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 10, 2, 0, 0,193, -/* 0x0c10 */ 100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, -/* 0x0c20 */ 72,102,139, 22,193,232, 11, 15,183,202, 15,175,193, 57,199,115, -/* 0x0c30 */ 24,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193,248, 5,141, -/* 0x0c40 */ 4, 2,102,137, 6,137,232,235, 21, 41, 68, 36, 72, 41,199,137, -/* 0x0c50 */ 208,102,193,232, 5,102, 41,194,141, 69, 1,102,137, 22,139,108, -/* 0x0c60 */ 36, 36, 77,137,108, 36, 36,117,137,141, 80,192,131,250, 3,137, -/* 0x0c70 */ 20, 36, 15,142, 39, 1, 0, 0,137,208,137,214,209,248,131,230, -/* 0x0c80 */ 1,141, 72,255,131,206, 2,131,250, 13,137, 76, 36, 32,127, 28, -/* 0x0c90 */ 139,108, 36,120,211,230, 1,210,137, 52, 36,141, 68,117, 0, 41, -/* 0x0ca0 */ 208, 5, 94, 5, 0, 0,137, 68, 36, 4,235, 86,141, 80,251,129, -/* 0x0cb0 */ 124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 86, -/* 0x0cc0 */ 1, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9, -/* 0x0cd0 */ 199,209,108, 36, 72, 1,246, 59,124, 36, 72,114, 7, 43,124, 36, -/* 0x0ce0 */ 72,131,206, 1, 74,117,200,139, 68, 36,120,193,230, 4,137, 52, -/* 0x0cf0 */ 36, 5, 68, 6, 0, 0,199, 68, 36, 32, 4, 0, 0, 0,137, 68, -/* 0x0d00 */ 36, 4,199, 68, 36, 28, 1, 0, 0, 0,184, 1, 0, 0, 0,139, -/* 0x0d10 */ 108, 36, 4, 1,192,137, 68, 36, 24, 1,197,129,124, 36, 72,255, -/* 0x0d20 */ 255,255, 0,119, 24, 59, 92, 36, 76, 15,132,234, 0, 0, 0,193, -/* 0x0d30 */ 100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, -/* 0x0d40 */ 72,102,139, 85, 0,193,232, 11, 15,183,242, 15,175,198, 57,199, -/* 0x0d50 */ 115, 27,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,193,248, 5, -/* 0x0d60 */ 141, 4, 2,102,137, 69, 0,139, 68, 36, 24,235, 31, 41, 68, 36, -/* 0x0d70 */ 72, 41,199,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 24, -/* 0x0d80 */ 102,137, 85, 0,139, 84, 36, 28, 64, 9, 20, 36,139, 76, 36, 32, -/* 0x0d90 */ 209,100, 36, 28, 73,137, 76, 36, 32, 15,133,112,255,255,255,139, -/* 0x0da0 */ 52, 36, 70,137,116, 36, 92,116, 89,139, 76, 36, 12,139,108, 36, -/* 0x0db0 */ 116,131,193, 2, 57,108, 36, 92,119, 95,139,132, 36,160, 0, 0, -/* 0x0dc0 */ 0,137,234, 43, 68, 36, 92, 3,148, 36,160, 0, 0, 0,141, 52, -/* 0x0dd0 */ 40,138, 6, 70,136, 68, 36,115,136, 2, 66,255, 68, 36,116, 73, -/* 0x0de0 */ 116, 15,139,172, 36,164, 0, 0, 0, 57,108, 36,116,114,226,235, -/* 0x0df0 */ 17,139,132, 36,164, 0, 0, 0, 57, 68, 36,116, 15,130,187,246, -/* 0x0e00 */ 255,255,129,124, 36, 72,255,255,255, 0,119, 21, 59, 92, 36, 76, -/* 0x0e10 */ 184, 1, 0, 0, 0,116, 41,235, 7,184, 1, 0, 0, 0,235, 32, -/* 0x0e20 */ 67, 43,156, 36,148, 0, 0, 0, 49,192,139,148, 36,156, 0, 0, -/* 0x0e30 */ 0,139, 76, 36,116,137, 26,139,156, 36,168, 0, 0, 0,137, 11, -/* 0x0e40 */ 131,196,124, 91, 94, 95, 93, 85, 87, 86, 83,131,236,124,139,148, -/* 0x0e50 */ 36,144, 0, 0, 0,199, 68, 36,116, 0, 0, 0, 0,198, 68, 36, -/* 0x0e60 */ 115, 0,139,172, 36,156, 0, 0, 0,141, 66, 4,137, 68, 36,120, -/* 0x0e70 */ 184, 1, 0, 0, 0, 15,182, 74, 2,137,195,211,227,137,217, 73, -/* 0x0e80 */ 137, 76, 36,108, 15,182, 74, 1,211,224, 72,137, 68, 36,104,139, -/* 0x0e90 */ 132, 36,168, 0, 0, 0, 15,182, 50,199, 69, 0, 0, 0, 0, 0, -/* 0x0ea0 */ 199, 68, 36, 96, 0, 0, 0, 0,199, 0, 0, 0, 0, 0,184, 0, -/* 0x0eb0 */ 3, 0, 0,137,116, 36,100,199, 68, 36, 92, 1, 0, 0, 0,199, -/* 0x0ec0 */ 68, 36, 88, 1, 0, 0, 0,199, 68, 36, 84, 1, 0, 0, 0,199, -/* 0x0ed0 */ 68, 36, 80, 1, 0, 0, 0, 15,182, 74, 1, 1,241,211,224,141, -/* 0x0ee0 */ 136, 54, 7, 0, 0, 57, 76, 36,116,115, 14,139, 68, 36,120,102, -/* 0x0ef0 */ 199, 0, 0, 4,131,192, 2,226,246,139,156, 36,148, 0, 0, 0, -/* 0x0f00 */ 49,255,199, 68, 36, 72,255,255,255,255,137,218, 3,148, 36,152, -/* 0x0f10 */ 0, 0, 0,137, 84, 36, 76, 49,210, 59, 92, 36, 76, 15,132,124, -/* 0x0f20 */ 9, 0, 0, 15,182, 3,193,231, 8, 66, 67, 9,199,131,250, 4, -/* 0x0f30 */ 126,231,139,140, 36,164, 0, 0, 0, 57, 76, 36,116, 15,131,100, -/* 0x0f40 */ 9, 0, 0,139,116, 36,116, 35,116, 36,108,139, 68, 36, 96,139, -/* 0x0f50 */ 84, 36,120,193,224, 4,137,116, 36, 68, 1,240,129,124, 36, 72, -/* 0x0f60 */ 255,255,255, 0,141, 44, 66,119, 24, 59, 92, 36, 76, 15,132, 44, -/* 0x0f70 */ 9, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9, -/* 0x0f80 */ 199,139, 68, 36, 72,102,139, 85, 0,193,232, 11, 15,183,202, 15, -/* 0x0f90 */ 175,193, 57,199, 15,131,221, 1, 0, 0,137, 68, 36, 72,184, 0, -/* 0x0fa0 */ 8, 0, 0, 41,200,138, 76, 36,100,193,248, 5,190, 1, 0, 0, -/* 0x0fb0 */ 0,141, 4, 2, 15,182, 84, 36,115,102,137, 69, 0,139, 68, 36, -/* 0x0fc0 */ 116, 35, 68, 36,104,139,108, 36,120,211,224,185, 8, 0, 0, 0, -/* 0x0fd0 */ 43, 76, 36,100,211,250, 1,208,105,192, 0, 6, 0, 0,131,124, -/* 0x0fe0 */ 36, 96, 6,141,132, 5,108, 14, 0, 0,137, 68, 36, 20, 15,142, -/* 0x0ff0 */ 202, 0, 0, 0,139, 68, 36,116, 43, 68, 36, 92,139,148, 36,160, -/* 0x1000 */ 0, 0, 0, 15,182, 4, 2,137, 68, 36, 64,209,100, 36, 64,139, -/* 0x1010 */ 76, 36, 64,141, 20, 54,139,108, 36, 20,129,225, 0, 1, 0, 0, -/* 0x1020 */ 129,124, 36, 72,255,255,255, 0,141, 68, 77, 0,137, 76, 36, 60, -/* 0x1030 */ 141, 44, 16,119, 24, 59, 92, 36, 76, 15,132, 96, 8, 0, 0,193, -/* 0x1040 */ 100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, -/* 0x1050 */ 72,102,139,141, 0, 2, 0, 0,193,232, 11, 15,183,241, 15,175, -/* 0x1060 */ 198, 57,199,115, 35,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240, -/* 0x1070 */ 137,214,193,248, 5,131,124, 36, 60, 0,141, 4, 1,102,137,133, -/* 0x1080 */ 0, 2, 0, 0,116, 34,235, 46, 41, 68, 36, 72, 41,199,137,200, -/* 0x1090 */ 141,114, 1,102,193,232, 5,102, 41,193,131,124, 36, 60, 0,102, -/* 0x10a0 */ 137,141, 0, 2, 0, 0,116, 14,129,254,255, 0, 0, 0, 15,142, -/* 0x10b0 */ 87,255,255,255,235,121,129,254,255, 0, 0, 0,127,113,141, 20, -/* 0x10c0 */ 54,139,108, 36, 20, 1,213,129,124, 36, 72,255,255,255, 0,119, -/* 0x10d0 */ 24, 59, 92, 36, 76, 15,132,196, 7, 0, 0,193,100, 36, 72, 8, -/* 0x10e0 */ 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 77, -/* 0x10f0 */ 0,193,232, 11, 15,183,241, 15,175,198, 57,199,115, 25,137, 68, -/* 0x1100 */ 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193,248, 5,141, 4, -/* 0x1110 */ 1,102,137, 69, 0,235,159, 41, 68, 36, 72, 41,199,137,200,141, -/* 0x1120 */ 114, 1,102,193,232, 5,102, 41,193,102,137, 77, 0,235,135,139, -/* 0x1130 */ 84, 36,116,137,240,139,140, 36,160, 0, 0, 0,136, 68, 36,115, -/* 0x1140 */ 136, 4, 10, 66,131,124, 36, 96, 3,137, 84, 36,116,127, 13,199, -/* 0x1150 */ 68, 36, 96, 0, 0, 0, 0,233, 27, 7, 0, 0,131,124, 36, 96, -/* 0x1160 */ 9,127, 10,131,108, 36, 96, 3,233, 10, 7, 0, 0,131,108, 36, -/* 0x1170 */ 96, 6,233, 0, 7, 0, 0,139, 76, 36, 72, 41,199,139,116, 36, -/* 0x1180 */ 96, 41,193,137,208,102,193,232, 5,102, 41,194,129,249,255,255, -/* 0x1190 */ 255, 0,102,137, 85, 0,139,108, 36,120,141,116,117, 0,137,116, -/* 0x11a0 */ 36, 56,119, 22, 59, 92, 36, 76, 15,132,241, 6, 0, 0, 15,182, -/* 0x11b0 */ 3,193,231, 8,193,225, 8, 67, 9,199,139,108, 36, 56,137,200, -/* 0x11c0 */ 193,232, 11,102,139,149,128, 1, 0, 0, 15,183,234, 15,175,197, -/* 0x11d0 */ 57,199,115, 82,137,198,184, 0, 8, 0, 0, 41,232,139,108, 36, -/* 0x11e0 */ 88,193,248, 5,139, 76, 36, 84,141, 4, 2,139, 84, 36, 56,137, -/* 0x11f0 */ 76, 36, 80,139, 76, 36,120,102,137,130,128, 1, 0, 0,139, 68, -/* 0x1200 */ 36, 92,137,108, 36, 84,137, 68, 36, 88, 49,192,131,124, 36, 96, -/* 0x1210 */ 6, 15,159,192,129,193,100, 6, 0, 0,141, 4, 64,137, 68, 36, -/* 0x1220 */ 96,233,116, 2, 0, 0,137,206, 41,199, 41,198,137,208,102,193, -/* 0x1230 */ 232, 5,139, 76, 36, 56,102, 41,194,129,254,255,255,255, 0,102, -/* 0x1240 */ 137,145,128, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, 77, 6, -/* 0x1250 */ 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,139,108, -/* 0x1260 */ 36, 56,137,242,193,234, 11,102,139,141,152, 1, 0, 0, 15,183, -/* 0x1270 */ 193, 15,175,208, 57,215, 15,131,227, 0, 0, 0,189, 0, 8, 0, -/* 0x1280 */ 0,137,214, 41,197,199, 68, 36, 52, 0, 8, 0, 0,137,232,193, -/* 0x1290 */ 248, 5,141, 4, 1,139, 76, 36, 56,102,137,129,152, 1, 0, 0, -/* 0x12a0 */ 139, 68, 36, 96,139, 76, 36, 68,193,224, 5, 3, 68, 36,120,129, -/* 0x12b0 */ 250,255,255,255, 0,141, 44, 72,119, 22, 59, 92, 36, 76, 15,132, -/* 0x12c0 */ 219, 5, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199, -/* 0x12d0 */ 102,139,149,224, 1, 0, 0,137,240,193,232, 11, 15,183,202, 15, -/* 0x12e0 */ 175,193, 57,199,115, 96, 41, 76, 36, 52,193,124, 36, 52, 5,139, -/* 0x12f0 */ 116, 36, 52,137, 68, 36, 72,131,124, 36,116, 0,141, 4, 50,102, -/* 0x1300 */ 137,133,224, 1, 0, 0, 15,132,147, 5, 0, 0, 49,192,131,124, -/* 0x1310 */ 36, 96, 6,139,172, 36,160, 0, 0, 0,139, 84, 36,116, 15,159, -/* 0x1320 */ 192,141, 68, 0, 9,137, 68, 36, 96,139, 68, 36,116, 43, 68, 36, -/* 0x1330 */ 92,138, 68, 5, 0,136, 68, 36,115,136, 4, 42, 66,137, 84, 36, -/* 0x1340 */ 116,233, 49, 5, 0, 0, 41,198, 41,199,137,208,102,193,232, 5, -/* 0x1350 */ 102, 41,194,102,137,149,224, 1, 0, 0,233, 31, 1, 0, 0,137, -/* 0x1360 */ 200, 41,214,102,193,232, 5,139,108, 36, 56,102, 41,193, 41,215, -/* 0x1370 */ 129,254,255,255,255, 0,102,137,141,152, 1, 0, 0,119, 22, 59, -/* 0x1380 */ 92, 36, 76, 15,132, 22, 5, 0, 0, 15,182, 3,193,231, 8,193, -/* 0x1390 */ 230, 8, 67, 9,199,139, 76, 36, 56,137,240,193,232, 11,102,139, -/* 0x13a0 */ 145,176, 1, 0, 0, 15,183,202, 15,175,193, 57,199,115, 35,137, -/* 0x13b0 */ 198,184, 0, 8, 0, 0, 41,200,139,108, 36, 56,193,248, 5,141, -/* 0x13c0 */ 4, 2,102,137,133,176, 1, 0, 0,139, 68, 36, 88,233,160, 0, -/* 0x13d0 */ 0, 0,137,241, 41,199, 41,193,137,208,102,193,232, 5,102, 41, -/* 0x13e0 */ 194,139, 68, 36, 56,129,249,255,255,255, 0,102,137,144,176, 1, -/* 0x13f0 */ 0, 0,119, 22, 59, 92, 36, 76, 15,132,161, 4, 0, 0, 15,182, -/* 0x1400 */ 3,193,231, 8,193,225, 8, 67, 9,199,139,116, 36, 56,137,200, -/* 0x1410 */ 193,232, 11,102,139,150,200, 1, 0, 0, 15,183,234, 15,175,197, -/* 0x1420 */ 57,199,115, 32,137,198,184, 0, 8, 0, 0, 41,232,139,108, 36, -/* 0x1430 */ 56,193,248, 5,141, 4, 2,102,137,133,200, 1, 0, 0,139, 68, -/* 0x1440 */ 36, 84,235, 38,137,206, 41,199, 41,198,137,208,102,193,232, 5, -/* 0x1450 */ 102, 41,194,139, 68, 36, 56,102,137,144,200, 1, 0, 0,139, 84, -/* 0x1460 */ 36, 84,139, 68, 36, 80,137, 84, 36, 80,139, 76, 36, 88,137, 76, -/* 0x1470 */ 36, 84,139,108, 36, 92,137, 68, 36, 92,137,108, 36, 88, 49,192, -/* 0x1480 */ 131,124, 36, 96, 6,139, 76, 36,120, 15,159,192,129,193,104, 10, -/* 0x1490 */ 0, 0,141, 68, 64, 8,137, 68, 36, 96,129,254,255,255,255, 0, -/* 0x14a0 */ 119, 22, 59, 92, 36, 76, 15,132,243, 3, 0, 0, 15,182, 3,193, -/* 0x14b0 */ 231, 8,193,230, 8, 67, 9,199,102,139, 17,137,240,193,232, 11, -/* 0x14c0 */ 15,183,234, 15,175,197, 57,199,115, 47,137, 68, 36, 72,184, 0, -/* 0x14d0 */ 8, 0, 0, 41,232,193,100, 36, 68, 4,193,248, 5,199, 68, 36, -/* 0x14e0 */ 44, 0, 0, 0, 0,141, 4, 2,102,137, 1,139, 68, 36, 68,141, -/* 0x14f0 */ 76, 1, 4,137, 76, 36, 16,235,114, 41,198, 41,199,137,208,102, -/* 0x1500 */ 193,232, 5,102, 41,194,129,254,255,255,255, 0,102,137, 17,119, -/* 0x1510 */ 22, 59, 92, 36, 76, 15,132,132, 3, 0, 0, 15,182, 3,193,231, -/* 0x1520 */ 8,193,230, 8, 67, 9,199,102,139, 81, 2,137,240,193,232, 11, -/* 0x1530 */ 15,183,234, 15,175,197, 57,199,115, 59,137, 68, 36, 72,184, 0, -/* 0x1540 */ 8, 0, 0, 41,232,193,100, 36, 68, 4,193,248, 5,199, 68, 36, -/* 0x1550 */ 44, 8, 0, 0, 0,141, 4, 2,139, 84, 36, 68,102,137, 65, 2, -/* 0x1560 */ 141,140, 17, 4, 1, 0, 0,137, 76, 36, 16,199, 68, 36, 48, 3, -/* 0x1570 */ 0, 0, 0,235, 47, 41,198, 41,199,137,208,137,116, 36, 72,102, -/* 0x1580 */ 193,232, 5,199, 68, 36, 44, 16, 0, 0, 0,102, 41,194,199, 68, -/* 0x1590 */ 36, 48, 8, 0, 0, 0,102,137, 81, 2,129,193, 4, 2, 0, 0, -/* 0x15a0 */ 137, 76, 36, 16,139, 76, 36, 48,186, 1, 0, 0, 0,137, 76, 36, -/* 0x15b0 */ 40,141, 44, 18,139,116, 36, 16, 1,238,129,124, 36, 72,255,255, -/* 0x15c0 */ 255, 0,119, 24, 59, 92, 36, 76, 15,132,209, 2, 0, 0,193,100, -/* 0x15d0 */ 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72, -/* 0x15e0 */ 102,139, 22,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 24, -/* 0x15f0 */ 137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4, -/* 0x1600 */ 2,137,234,102,137, 6,235, 21, 41, 68, 36, 72, 41,199,137,208, -/* 0x1610 */ 102,193,232, 5,102, 41,194,102,137, 22,141, 85, 1,139,116, 36, -/* 0x1620 */ 40, 78,137,116, 36, 40,117,137,138, 76, 36, 48,184, 1, 0, 0, -/* 0x1630 */ 0,211,224, 41,194, 3, 84, 36, 44,131,124, 36, 96, 3,137, 84, -/* 0x1640 */ 36, 12, 15,143,231, 1, 0, 0,131, 68, 36, 96, 7,131,250, 3, -/* 0x1650 */ 137,208,126, 5,184, 3, 0, 0, 0,139,116, 36,120,193,224, 7, -/* 0x1660 */ 199, 68, 36, 36, 6, 0, 0, 0,141,132, 6, 96, 3, 0, 0,137, -/* 0x1670 */ 68, 36, 8,184, 1, 0, 0, 0,141, 44, 0,139,116, 36, 8, 1, -/* 0x1680 */ 238,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15, -/* 0x1690 */ 132, 10, 2, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, -/* 0x16a0 */ 67, 9,199,139, 68, 36, 72,102,139, 22,193,232, 11, 15,183,202, -/* 0x16b0 */ 15,175,193, 57,199,115, 24,137, 68, 36, 72,184, 0, 8, 0, 0, -/* 0x16c0 */ 41,200,193,248, 5,141, 4, 2,102,137, 6,137,232,235, 21, 41, -/* 0x16d0 */ 68, 36, 72, 41,199,137,208,102,193,232, 5,102, 41,194,141, 69, -/* 0x16e0 */ 1,102,137, 22,139,108, 36, 36, 77,137,108, 36, 36,117,137,141, -/* 0x16f0 */ 80,192,131,250, 3,137, 20, 36, 15,142, 39, 1, 0, 0,137,208, -/* 0x1700 */ 137,214,209,248,131,230, 1,141, 72,255,131,206, 2,131,250, 13, -/* 0x1710 */ 137, 76, 36, 32,127, 28,139,108, 36,120,211,230, 1,210,137, 52, -/* 0x1720 */ 36,141, 68,117, 0, 41,208, 5, 94, 5, 0, 0,137, 68, 36, 4, -/* 0x1730 */ 235, 86,141, 80,251,129,124, 36, 72,255,255,255, 0,119, 24, 59, -/* 0x1740 */ 92, 36, 76, 15,132, 86, 1, 0, 0,193,100, 36, 72, 8, 15,182, -/* 0x1750 */ 3,193,231, 8, 67, 9,199,209,108, 36, 72, 1,246, 59,124, 36, -/* 0x1760 */ 72,114, 7, 43,124, 36, 72,131,206, 1, 74,117,200,139, 68, 36, -/* 0x1770 */ 120,193,230, 4,137, 52, 36, 5, 68, 6, 0, 0,199, 68, 36, 32, -/* 0x1780 */ 4, 0, 0, 0,137, 68, 36, 4,199, 68, 36, 28, 1, 0, 0, 0, -/* 0x1790 */ 184, 1, 0, 0, 0,139,108, 36, 4, 1,192,137, 68, 36, 24, 1, -/* 0x17a0 */ 197,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15, -/* 0x17b0 */ 132,234, 0, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, -/* 0x17c0 */ 67, 9,199,139, 68, 36, 72,102,139, 85, 0,193,232, 11, 15,183, -/* 0x17d0 */ 242, 15,175,198, 57,199,115, 27,137, 68, 36, 72,184, 0, 8, 0, -/* 0x17e0 */ 0, 41,240,193,248, 5,141, 4, 2,102,137, 69, 0,139, 68, 36, -/* 0x17f0 */ 24,235, 31, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5,102, -/* 0x1800 */ 41,194,139, 68, 36, 24,102,137, 85, 0,139, 84, 36, 28, 64, 9, -/* 0x1810 */ 20, 36,139, 76, 36, 32,209,100, 36, 28, 73,137, 76, 36, 32, 15, -/* 0x1820 */ 133,112,255,255,255,139, 52, 36, 70,137,116, 36, 92,116, 89,139, -/* 0x1830 */ 76, 36, 12,139,108, 36,116,131,193, 2, 57,108, 36, 92,119, 95, -/* 0x1840 */ 139,132, 36,160, 0, 0, 0,137,234, 43, 68, 36, 92, 3,148, 36, -/* 0x1850 */ 160, 0, 0, 0,141, 52, 40,138, 6, 70,136, 68, 36,115,136, 2, -/* 0x1860 */ 66,255, 68, 36,116, 73,116, 15,139,172, 36,164, 0, 0, 0, 57, -/* 0x1870 */ 108, 36,116,114,226,235, 17,139,132, 36,164, 0, 0, 0, 57, 68, -/* 0x1880 */ 36,116, 15,130,187,246,255,255,129,124, 36, 72,255,255,255, 0, -/* 0x1890 */ 119, 21, 59, 92, 36, 76,184, 1, 0, 0, 0,116, 41,235, 7,184, -/* 0x18a0 */ 1, 0, 0, 0,235, 32, 67, 43,156, 36,148, 0, 0, 0, 49,192, -/* 0x18b0 */ 139,148, 36,156, 0, 0, 0,139, 76, 36,116,137, 26,139,156, 36, -/* 0x18c0 */ 168, 0, 0, 0,137, 11,131,196,124, 91, 94, 95, 93, 3,115,252, -/* 0x18d0 */ 3,123,248, 49,192,141,140, 36, 0,255,255,255,137,236, 80, 57, -/* 0x18e0 */ 204,117,251,137,236, 49,201,185, 0, 0, 0, 0,138, 7, 71, 44, -/* 0x18f0 */ 232, 60, 1,119,247,128, 63, 0,117, 4,139, 7,138, 95, 4,102, -/* 0x1900 */ 193,232, 8,134,196,193,192, 16,134,196, 41,248,128,235,232,137, -/* 0x1910 */ 7,131,199, 5,136,216,226, 9,185, 0, 0, 0, 0,176,232,176, -/* 0x1920 */ 233,242,174,117, 4,128, 63, 0,117,255,139, 7,102,193,232, 8, -/* 0x1930 */ 134,196,193,192, 16,134,196, 41,248,171,235, 4,139, 84, 36, 36, -/* 0x1940 */ 3, 84, 36, 40, 57,214,116, 1, 72, 43,124, 36, 44,139, 84, 36, -/* 0x1950 */ 48,137, 58,137, 68, 36, 28, 97,195,235, 4, 90, 88, 89,151, 96, -/* 0x1960 */ 49,219,187, 0, 0, 0, 0,106, 15, 88,138,100, 36, 32,106, 15, -/* 0x1970 */ 91,138,124, 36, 32,138, 84, 36, 32,233,252,255,255,255, 15,183, -/* 0x1980 */ 47, 43,110, 12, 41,221,117,255,131,237, 1,115,255,136, 95,255, -/* 0x1990 */ 73,136, 7, 71,139, 7,156,102,193,232, 8,193,192, 16,134,196, -/* 0x19a0 */ 157,115,255,176, 0, 15,200,115,255,193,232, 1,115, 4,254,203, -/* 0x19b0 */ 75, 35, 30,125, 2, 3, 30,137, 4,156,235,255,141, 20, 24, 15, -/* 0x19c0 */ 182,210, 35, 22, 59, 22,114, 2, 43, 22,139, 4,148,254,203, 75, -/* 0x19d0 */ 35, 30,125, 2, 3, 30,139, 44,156,133,237,117, 9, 80,139, 70, -/* 0x19e0 */ 4,254,200, 72, 35, 6,125, 2, 3, 6, 49,237,137, 70, 4,135, -/* 0x19f0 */ 108,132, 4, 88,137, 44,148,137, 4,156, 41,248,131,233, 4, 3, -/* 0x1a00 */ 70, 16, 1,240,137, 7,131,199, 4,235,255,233,252,255,255,255, -/* 0x1a10 */ 80,176,233,176,232, 80,106, 0, 83,137,230, 94,137,218,178,233, -/* 0x1a20 */ 178,232, 67,106, 0,254,203, 75,117,255, 15,183, 7,131,199, 1, -/* 0x1a30 */ 60,128,114, 4, 60,143,118,255, 41,208, 43, 70, 8,131,232, 2, -/* 0x1a40 */ 116,255,131,232, 1,114,255,115,255,122, 0,123, 0,248,235,255, -/* 0x1a50 */ 131,233, 1,127,255,137,231,185, 4, 1, 0, 0,139, 14,131,193, -/* 0x1a60 */ 5,139, 14,131,193, 4, 49,192,243,171,137,252, 86, 97,151, 81, -/* 0x1a70 */ 80, 82,195,137,254,235, 31,138, 7, 71, 60,128,114, 10, 60,143, -/* 0x1a80 */ 119, 6,128,127,254, 15,116, 5, 44,232, 60, 1,119,255,131,249, -/* 0x1a90 */ 4,114, 4,139, 7, 40,208,117,255,134,196,193,192, 16,134,196, -/* 0x1aa0 */ 41,248, 1,240,131,233, 4,171,131,233, 1,114, 4,138, 7, 71, -/* 0x1ab0 */ 235, 13,131,233, 1,115, 3, 97,195, 0, 0, 0, 94,173,141,189, -/* 0x1ac0 */ 246,255,255,255, 43, 63,106,255,106, 0,106,255,106, 34,139, 22, -/* 0x1ad0 */ 106, 3, 82,106, 0,232, 51, 0, 0, 0, 82, 80,146,173, 80,137, -/* 0x1ae0 */ 227,173,145,173, 80, 83, 82, 81, 86,255,213,131,196, 24, 91, 89, -/* 0x1af0 */ 106, 5, 90, 81, 83,106,125, 88,205,128,141,118,240,173,131,224, -/* 0x1b00 */ 252, 1,248,139,141,246,255,255,255, 90, 82,255,226,141, 92, 36, -/* 0x1b10 */ 4,106, 90, 88,205,128, 61, 0,240,255,255,114, 1,244,194, 24, -/* 0x1b20 */ 0, 0, 0, 0, 93,144,144,232,144,255,255,255, 0, 0, 0, 0, -/* 0x1b30 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, -/* 0x1b40 */ 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110,115, -/* 0x1b50 */ 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, -/* 0x1b60 */ 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, -/* 0x1b70 */ 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, -/* 0x1b80 */ 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, -/* 0x1b90 */ 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 76, 69, 88, 69, -/* 0x1ba0 */ 67, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, 54, 32, 32, 48, 32, -/* 0x1bb0 */ 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1bc0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 76, 69, 88, 69, -/* 0x1bd0 */ 67, 48, 48, 57, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x1be0 */ 48, 32, 32, 48, 51, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1bf0 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 76, 69, 88, 69, 67, -/* 0x1c00 */ 48, 49, 48, 32, 32, 32, 32, 32, 32, 48, 99, 32, 32, 48, 32, 32, -/* 0x1c10 */ 48, 32, 32, 48, 51, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1c20 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 78, 50, 66, 83, 77, -/* 0x1c30 */ 65, 49, 48, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, 32, -/* 0x1c40 */ 48, 32, 32, 48, 52, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1c50 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 52, 32, 78, 50, 66, 70, 65, -/* 0x1c60 */ 83, 49, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, -/* 0x1c70 */ 48, 32, 32, 48, 52, 57, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1c80 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 53, 32, 78, 50, 66, 70, 65, -/* 0x1c90 */ 83, 49, 49, 32, 32, 32, 32, 32, 32, 48, 54, 32, 32, 48, 32, 32, -/* 0x1ca0 */ 48, 32, 32, 48, 52, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1cb0 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 54, 32, 78, 50, 66, 68, 69, -/* 0x1cc0 */ 67, 49, 48, 32, 32, 32, 32, 32, 32, 48, 98, 32, 32, 48, 32, 32, -/* 0x1cd0 */ 48, 32, 32, 48, 53, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1ce0 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 55, 32, 78, 50, 66, 83, 77, -/* 0x1cf0 */ 65, 50, 48, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, -/* 0x1d00 */ 48, 32, 32, 48, 53, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1d10 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 56, 32, 78, 50, 66, 70, 65, -/* 0x1d20 */ 83, 50, 48, 32, 32, 32, 32, 32, 32, 48, 57, 32, 32, 48, 32, 32, -/* 0x1d30 */ 48, 32, 32, 48, 54, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1d40 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 57, 32, 78, 50, 66, 68, 69, -/* 0x1d50 */ 67, 50, 48, 32, 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, 32, -/* 0x1d60 */ 48, 32, 32, 48, 54, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1d70 */ 78, 84, 69, 78, 84, 83, 10, 32, 49, 48, 32, 78, 50, 66, 83, 77, -/* 0x1d80 */ 65, 51, 48, 32, 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, 32, -/* 0x1d90 */ 48, 32, 32, 48, 55, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1da0 */ 78, 84, 69, 78, 84, 83, 10, 32, 49, 49, 32, 78, 50, 66, 70, 65, -/* 0x1db0 */ 83, 51, 48, 32, 32, 32, 32, 32, 32, 48,102, 32, 32, 48, 32, 32, -/* 0x1dc0 */ 48, 32, 32, 48, 56, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1dd0 */ 78, 84, 69, 78, 84, 83, 10, 32, 49, 50, 32, 78, 50, 66, 68, 69, -/* 0x1de0 */ 67, 51, 48, 32, 32, 32, 32, 32, 32, 48, 51,101, 32, 32, 48, 32, -/* 0x1df0 */ 32, 48, 32, 32, 48, 57, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1e00 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 51, 32, 78, 50, 66, 83, -/* 0x1e10 */ 77, 65, 52, 48, 32, 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, -/* 0x1e20 */ 32, 48, 32, 32, 48,100, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1e30 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 52, 32, 78, 50, 66, 70, -/* 0x1e40 */ 65, 83, 52, 48, 32, 32, 32, 32, 32, 32, 48,102, 32, 32, 48, 32, -/* 0x1e50 */ 32, 48, 32, 32, 48,100,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1e60 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 53, 32, 78, 50, 66, 83, -/* 0x1e70 */ 77, 65, 53, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, -/* 0x1e80 */ 32, 48, 32, 32, 48,101,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1e90 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 54, 32, 78, 50, 66, 70, -/* 0x1ea0 */ 65, 83, 53, 48, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, -/* 0x1eb0 */ 32, 48, 32, 32, 48,101,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1ec0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 55, 32, 78, 50, 66, 68, -/* 0x1ed0 */ 69, 67, 53, 48, 32, 32, 32, 32, 32, 32, 48, 57, 32, 32, 48, 32, -/* 0x1ee0 */ 32, 48, 32, 32, 48,102, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1ef0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 56, 32, 78, 50, 66, 83, -/* 0x1f00 */ 77, 65, 54, 48, 32, 32, 32, 32, 32, 32, 48, 99, 32, 32, 48, 32, -/* 0x1f10 */ 32, 48, 32, 32, 48,102, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x1f20 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 57, 32, 78, 50, 66, 70, -/* 0x1f30 */ 65, 83, 54, 48, 32, 32, 32, 32, 32, 32, 48, 49, 57, 32, 32, 48, -/* 0x1f40 */ 32, 32, 48, 32, 32, 48, 49, 48, 55, 32, 32, 50, 42, 42, 48, 32, -/* 0x1f50 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 50, 48, 32, 78, 50, -/* 0x1f60 */ 66, 70, 65, 83, 54, 49, 32, 32, 32, 32, 32, 32, 48, 49, 54, 32, -/* 0x1f70 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 50, 48, 32, 32, 50, 42, 42, -/* 0x1f80 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 50, 49, 32, -/* 0x1f90 */ 78, 50, 66, 68, 69, 67, 54, 48, 32, 32, 32, 32, 32, 32, 48, 32, -/* 0x1fa0 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 51, 54, 32, 32, 50, 42, 42, -/* 0x1fb0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 50, 50, 32, -/* 0x1fc0 */ 78, 50, 68, 83, 77, 65, 49, 48, 32, 32, 32, 32, 32, 32, 48, 51, -/* 0x1fd0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 51, 54, 32, 32, 50, 42, -/* 0x1fe0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 50, 51, -/* 0x1ff0 */ 32, 78, 50, 68, 70, 65, 83, 49, 48, 32, 32, 32, 32, 32, 32, 48, -/* 0x2000 */ 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 51, 57, 32, 32, 50, -/* 0x2010 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 50, -/* 0x2020 */ 52, 32, 78, 50, 68, 70, 65, 83, 49, 49, 32, 32, 32, 32, 32, 32, -/* 0x2030 */ 48, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 51, 98, 32, 32, -/* 0x2040 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, -/* 0x2050 */ 50, 53, 32, 78, 50, 68, 68, 69, 67, 49, 48, 32, 32, 32, 32, 32, -/* 0x2060 */ 32, 48, 98, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 52, 49, 32, -/* 0x2070 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x2080 */ 32, 50, 54, 32, 78, 50, 68, 83, 77, 65, 50, 48, 32, 32, 32, 32, -/* 0x2090 */ 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 52, 99, -/* 0x20a0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x20b0 */ 10, 32, 50, 55, 32, 78, 50, 68, 70, 65, 83, 50, 48, 32, 32, 32, -/* 0x20c0 */ 32, 32, 32, 48, 57, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 53, -/* 0x20d0 */ 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x20e0 */ 83, 10, 32, 50, 56, 32, 78, 50, 68, 68, 69, 67, 50, 48, 32, 32, -/* 0x20f0 */ 32, 32, 32, 32, 48,100, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x2100 */ 53, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, -/* 0x2110 */ 84, 83, 10, 32, 50, 57, 32, 78, 50, 68, 83, 77, 65, 51, 48, 32, -/* 0x2120 */ 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, 32, 48, 32, 32, 48, -/* 0x2130 */ 49, 54, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x2140 */ 78, 84, 83, 10, 32, 51, 48, 32, 78, 50, 68, 70, 65, 83, 51, 48, -/* 0x2150 */ 32, 32, 32, 32, 32, 32, 48,102, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x2160 */ 48, 49, 55, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x2170 */ 69, 78, 84, 83, 10, 32, 51, 49, 32, 78, 50, 68, 68, 69, 67, 51, -/* 0x2180 */ 48, 32, 32, 32, 32, 32, 32, 48, 53, 50, 32, 32, 48, 32, 32, 48, -/* 0x2190 */ 32, 32, 48, 49, 56, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x21a0 */ 78, 84, 69, 78, 84, 83, 10, 32, 51, 50, 32, 78, 50, 68, 83, 77, -/* 0x21b0 */ 65, 52, 48, 32, 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, 32, -/* 0x21c0 */ 48, 32, 32, 48, 49,100, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x21d0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 51, 51, 32, 78, 50, 68, 70, -/* 0x21e0 */ 65, 83, 52, 48, 32, 32, 32, 32, 32, 32, 48,102, 32, 32, 48, 32, -/* 0x21f0 */ 32, 48, 32, 32, 48, 49,101, 50, 32, 32, 50, 42, 42, 48, 32, 32, -/* 0x2200 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 51, 52, 32, 78, 50, 68, -/* 0x2210 */ 83, 77, 65, 53, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, -/* 0x2220 */ 32, 32, 48, 32, 32, 48, 49,102, 49, 32, 32, 50, 42, 42, 48, 32, -/* 0x2230 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 51, 53, 32, 78, 50, -/* 0x2240 */ 68, 70, 65, 83, 53, 48, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, -/* 0x2250 */ 48, 32, 32, 48, 32, 32, 48, 49,102, 51, 32, 32, 50, 42, 42, 48, -/* 0x2260 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 51, 54, 32, 78, -/* 0x2270 */ 50, 68, 68, 69, 67, 53, 48, 32, 32, 32, 32, 32, 32, 48, 57, 32, -/* 0x2280 */ 32, 48, 32, 32, 48, 32, 32, 48, 49,102, 54, 32, 32, 50, 42, 42, -/* 0x2290 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 51, 55, 32, -/* 0x22a0 */ 78, 50, 68, 83, 77, 65, 54, 48, 32, 32, 32, 32, 32, 32, 48, 99, -/* 0x22b0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49,102,102, 32, 32, 50, 42, -/* 0x22c0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 51, 56, -/* 0x22d0 */ 32, 78, 50, 68, 70, 65, 83, 54, 48, 32, 32, 32, 32, 32, 32, 48, -/* 0x22e0 */ 49, 57, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 48, 98, 32, 32, -/* 0x22f0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, -/* 0x2300 */ 51, 57, 32, 78, 50, 68, 70, 65, 83, 54, 49, 32, 32, 32, 32, 32, -/* 0x2310 */ 32, 48, 49, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 50, 52, -/* 0x2320 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x2330 */ 10, 32, 52, 48, 32, 78, 50, 68, 68, 69, 67, 54, 48, 32, 32, 32, -/* 0x2340 */ 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 51, 97, -/* 0x2350 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x2360 */ 10, 32, 52, 49, 32, 78, 50, 69, 83, 77, 65, 49, 48, 32, 32, 32, -/* 0x2370 */ 32, 32, 32, 48, 51, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 51, -/* 0x2380 */ 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x2390 */ 83, 10, 32, 52, 50, 32, 78, 50, 69, 70, 65, 83, 49, 48, 32, 32, -/* 0x23a0 */ 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, -/* 0x23b0 */ 51,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, -/* 0x23c0 */ 84, 83, 10, 32, 52, 51, 32, 78, 50, 69, 70, 65, 83, 49, 49, 32, -/* 0x23d0 */ 32, 32, 32, 32, 32, 48, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, -/* 0x23e0 */ 50, 51,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x23f0 */ 78, 84, 83, 10, 32, 52, 52, 32, 78, 50, 69, 68, 69, 67, 49, 48, -/* 0x2400 */ 32, 32, 32, 32, 32, 32, 48, 98, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x2410 */ 48, 50, 52, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x2420 */ 69, 78, 84, 83, 10, 32, 52, 53, 32, 78, 50, 69, 83, 77, 65, 50, -/* 0x2430 */ 48, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, -/* 0x2440 */ 32, 48, 50, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x2450 */ 84, 69, 78, 84, 83, 10, 32, 52, 54, 32, 78, 50, 69, 70, 65, 83, -/* 0x2460 */ 50, 48, 32, 32, 32, 32, 32, 32, 48, 57, 32, 32, 48, 32, 32, 48, -/* 0x2470 */ 32, 32, 48, 50, 53, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x2480 */ 78, 84, 69, 78, 84, 83, 10, 32, 52, 55, 32, 78, 50, 69, 68, 69, -/* 0x2490 */ 67, 50, 48, 32, 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, 32, -/* 0x24a0 */ 48, 32, 32, 48, 50, 53,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x24b0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 52, 56, 32, 78, 50, 69, 83, -/* 0x24c0 */ 77, 65, 51, 48, 32, 32, 32, 32, 32, 32, 48,100, 32, 32, 48, 32, -/* 0x24d0 */ 32, 48, 32, 32, 48, 50, 54, 98, 32, 32, 50, 42, 42, 48, 32, 32, -/* 0x24e0 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 52, 57, 32, 78, 50, 69, -/* 0x24f0 */ 70, 65, 83, 51, 48, 32, 32, 32, 32, 32, 32, 48,102, 32, 32, 48, -/* 0x2500 */ 32, 32, 48, 32, 32, 48, 50, 55, 56, 32, 32, 50, 42, 42, 48, 32, -/* 0x2510 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 53, 48, 32, 78, 50, -/* 0x2520 */ 69, 68, 69, 67, 51, 48, 32, 32, 32, 32, 32, 32, 48, 53,102, 32, -/* 0x2530 */ 32, 48, 32, 32, 48, 32, 32, 48, 50, 56, 55, 32, 32, 50, 42, 42, -/* 0x2540 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 53, 49, 32, -/* 0x2550 */ 78, 50, 69, 83, 77, 65, 52, 48, 32, 32, 32, 32, 32, 32, 48,100, -/* 0x2560 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 50,101, 54, 32, 32, 50, 42, -/* 0x2570 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 53, 50, -/* 0x2580 */ 32, 78, 50, 69, 70, 65, 83, 52, 48, 32, 32, 32, 32, 32, 32, 48, -/* 0x2590 */ 102, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50,102, 51, 32, 32, 50, -/* 0x25a0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 53, -/* 0x25b0 */ 51, 32, 78, 50, 69, 83, 77, 65, 53, 48, 32, 32, 32, 32, 32, 32, -/* 0x25c0 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 48, 50, 32, 32, -/* 0x25d0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, -/* 0x25e0 */ 53, 52, 32, 78, 50, 69, 70, 65, 83, 53, 48, 32, 32, 32, 32, 32, -/* 0x25f0 */ 32, 48, 51, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 48, 52, 32, -/* 0x2600 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x2610 */ 32, 53, 53, 32, 78, 50, 69, 68, 69, 67, 53, 48, 32, 32, 32, 32, -/* 0x2620 */ 32, 32, 48, 57, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 48, 55, -/* 0x2630 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x2640 */ 10, 32, 53, 54, 32, 78, 50, 69, 83, 77, 65, 54, 48, 32, 32, 32, -/* 0x2650 */ 32, 32, 32, 48, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 49, -/* 0x2660 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x2670 */ 83, 10, 32, 53, 55, 32, 78, 50, 69, 70, 65, 83, 54, 48, 32, 32, -/* 0x2680 */ 32, 32, 32, 32, 48, 49, 57, 32, 32, 48, 32, 32, 48, 32, 32, 48, -/* 0x2690 */ 51, 49, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x26a0 */ 78, 84, 83, 10, 32, 53, 56, 32, 78, 50, 69, 70, 65, 83, 54, 49, -/* 0x26b0 */ 32, 32, 32, 32, 32, 32, 48, 49, 54, 32, 32, 48, 32, 32, 48, 32, -/* 0x26c0 */ 32, 48, 51, 51, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x26d0 */ 84, 69, 78, 84, 83, 10, 32, 53, 57, 32, 78, 50, 69, 68, 69, 67, -/* 0x26e0 */ 54, 48, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, -/* 0x26f0 */ 32, 48, 51, 52, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x2700 */ 84, 69, 78, 84, 83, 10, 32, 54, 48, 32, 76, 90, 77, 65, 95, 68, -/* 0x2710 */ 69, 67, 48, 48, 32, 32, 32, 32, 48, 50,101, 32, 32, 48, 32, 32, -/* 0x2720 */ 48, 32, 32, 48, 51, 52, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x2730 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 54, 49, 32, 76, 90, 77, 65, -/* 0x2740 */ 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 52, 56, 32, 32, 48, -/* 0x2750 */ 32, 32, 48, 32, 32, 48, 51, 55, 57, 32, 32, 50, 42, 42, 48, 32, -/* 0x2760 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 54, 50, 32, 76, 90, -/* 0x2770 */ 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 97, 56, 54, -/* 0x2780 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 99, 49, 32, 32, 50, 42, -/* 0x2790 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 54, 51, -/* 0x27a0 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, -/* 0x27b0 */ 97, 56, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48,101, 52, 55, 32, -/* 0x27c0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x27d0 */ 32, 54, 52, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, -/* 0x27e0 */ 32, 32, 48, 49, 97, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 56, -/* 0x27f0 */ 99,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, -/* 0x2800 */ 84, 83, 10, 32, 54, 53, 32, 67, 65, 76, 76, 84, 82, 48, 48, 32, -/* 0x2810 */ 32, 32, 32, 32, 32, 48,101, 32, 32, 48, 32, 32, 48, 32, 32, 48, -/* 0x2820 */ 49, 56,101, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x2830 */ 69, 78, 84, 83, 10, 32, 54, 54, 32, 67, 84, 67, 76, 69, 86, 69, -/* 0x2840 */ 49, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, -/* 0x2850 */ 32, 48, 49, 56,102, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x2860 */ 78, 84, 69, 78, 84, 83, 10, 32, 54, 55, 32, 67, 65, 76, 76, 84, -/* 0x2870 */ 82, 48, 49, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, -/* 0x2880 */ 48, 32, 32, 48, 49, 56,102, 97, 32, 32, 50, 42, 42, 48, 32, 32, -/* 0x2890 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 54, 56, 32, 67, 84, 66, -/* 0x28a0 */ 83, 72, 82, 48, 49, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, -/* 0x28b0 */ 32, 32, 48, 32, 32, 48, 49, 56,102,102, 32, 32, 50, 42, 42, 48, -/* 0x28c0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 54, 57, 32, 67, -/* 0x28d0 */ 84, 66, 82, 79, 82, 48, 49, 32, 32, 32, 32, 32, 32, 48, 50, 32, -/* 0x28e0 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 48, 51, 32, 32, 50, 42, -/* 0x28f0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 55, 48, -/* 0x2900 */ 32, 67, 84, 66, 83, 87, 65, 48, 49, 32, 32, 32, 32, 32, 32, 48, -/* 0x2910 */ 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 48, 53, 32, 32, -/* 0x2920 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, -/* 0x2930 */ 55, 49, 32, 67, 65, 76, 76, 84, 82, 48, 50, 32, 32, 32, 32, 32, -/* 0x2940 */ 32, 48,101, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 48, 97, -/* 0x2950 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x2960 */ 10, 32, 55, 50, 32, 67, 65, 76, 76, 84, 82, 49, 48, 32, 32, 32, -/* 0x2970 */ 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, -/* 0x2980 */ 49, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, -/* 0x2990 */ 84, 83, 10, 32, 55, 51, 32, 67, 65, 76, 76, 84, 82, 69, 56, 32, -/* 0x29a0 */ 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, -/* 0x29b0 */ 49, 57, 49,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x29c0 */ 69, 78, 84, 83, 10, 32, 55, 52, 32, 67, 65, 76, 76, 84, 82, 69, -/* 0x29d0 */ 57, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, -/* 0x29e0 */ 32, 48, 49, 57, 49,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x29f0 */ 78, 84, 69, 78, 84, 83, 10, 32, 55, 53, 32, 67, 65, 76, 76, 84, -/* 0x2a00 */ 82, 49, 49, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, 32, -/* 0x2a10 */ 48, 32, 32, 48, 49, 57, 50, 49, 32, 32, 50, 42, 42, 48, 32, 32, -/* 0x2a20 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 55, 54, 32, 67, 84, 67, -/* 0x2a30 */ 76, 69, 86, 69, 50, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, -/* 0x2a40 */ 32, 32, 48, 32, 32, 48, 49, 57, 50, 53, 32, 32, 50, 42, 42, 48, -/* 0x2a50 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 55, 55, 32, 67, -/* 0x2a60 */ 65, 76, 76, 84, 82, 49, 50, 32, 32, 32, 32, 32, 32, 48, 50, 32, -/* 0x2a70 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 50, 97, 32, 32, 50, 42, -/* 0x2a80 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 55, 56, -/* 0x2a90 */ 32, 67, 84, 66, 83, 72, 82, 49, 49, 32, 32, 32, 32, 32, 32, 48, -/* 0x2aa0 */ 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 50, 99, 32, 32, -/* 0x2ab0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, -/* 0x2ac0 */ 55, 57, 32, 67, 84, 66, 82, 79, 82, 49, 49, 32, 32, 32, 32, 32, -/* 0x2ad0 */ 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 51, 48, -/* 0x2ae0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x2af0 */ 10, 32, 56, 48, 32, 67, 84, 66, 83, 87, 65, 49, 49, 32, 32, 32, -/* 0x2b00 */ 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, -/* 0x2b10 */ 51, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, -/* 0x2b20 */ 84, 83, 10, 32, 56, 49, 32, 67, 65, 76, 76, 84, 82, 49, 51, 32, -/* 0x2b30 */ 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, -/* 0x2b40 */ 49, 57, 51, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x2b50 */ 69, 78, 84, 83, 10, 32, 56, 50, 32, 76, 69, 88, 69, 67, 48, 49, -/* 0x2b60 */ 53, 32, 32, 32, 32, 32, 32, 48, 49,100, 32, 32, 48, 32, 32, 48, -/* 0x2b70 */ 32, 32, 48, 49, 57, 51, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x2b80 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 56, 51, 32, 76, 88, 85, 78, -/* 0x2b90 */ 70, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, -/* 0x2ba0 */ 32, 48, 32, 32, 48, 49, 57, 53, 57, 32, 32, 50, 42, 42, 48, 32, -/* 0x2bb0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 56, 52, 32, 76, 88, -/* 0x2bc0 */ 85, 78, 70, 48, 48, 50, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, -/* 0x2bd0 */ 48, 32, 32, 48, 32, 32, 48, 49, 57, 53, 98, 32, 32, 50, 42, 42, -/* 0x2be0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 56, 53, 32, -/* 0x2bf0 */ 77, 82, 85, 66, 89, 84, 69, 48, 32, 32, 32, 32, 32, 32, 48, 50, -/* 0x2c00 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 54, 48, 32, 32, 50, -/* 0x2c10 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 56, -/* 0x2c20 */ 54, 32, 76, 88, 77, 82, 85, 48, 48, 53, 32, 32, 32, 32, 32, 32, -/* 0x2c30 */ 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 54, 50, 32, -/* 0x2c40 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x2c50 */ 32, 56, 55, 32, 76, 88, 77, 82, 85, 48, 48, 54, 32, 32, 32, 32, -/* 0x2c60 */ 32, 32, 48, 55, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 54, -/* 0x2c70 */ 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x2c80 */ 83, 10, 32, 56, 56, 32, 76, 88, 77, 82, 85, 48, 48, 55, 32, 32, -/* 0x2c90 */ 32, 32, 32, 32, 48, 55, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x2ca0 */ 57, 54,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x2cb0 */ 78, 84, 83, 10, 32, 56, 57, 32, 76, 88, 85, 78, 70, 48, 48, 56, -/* 0x2cc0 */ 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x2cd0 */ 48, 49, 57, 55, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x2ce0 */ 84, 69, 78, 84, 83, 10, 32, 57, 48, 32, 76, 88, 85, 78, 70, 48, -/* 0x2cf0 */ 49, 48, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, -/* 0x2d00 */ 32, 32, 48, 49, 57, 55, 57, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x2d10 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 57, 49, 32, 76, 88, 74, 67, -/* 0x2d20 */ 67, 48, 49, 48, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, -/* 0x2d30 */ 32, 48, 32, 32, 48, 49, 57, 55,101, 32, 32, 50, 42, 42, 48, 32, -/* 0x2d40 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 57, 50, 32, 76, 88, -/* 0x2d50 */ 77, 82, 85, 48, 52, 53, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, -/* 0x2d60 */ 48, 32, 32, 48, 32, 32, 48, 49, 57, 56, 49, 32, 32, 50, 42, 42, -/* 0x2d70 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 57, 51, 32, -/* 0x2d80 */ 76, 88, 77, 82, 85, 48, 52, 54, 32, 32, 32, 32, 32, 32, 48, 50, -/* 0x2d90 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 56, 52, 32, 32, 50, -/* 0x2da0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 57, -/* 0x2db0 */ 52, 32, 76, 88, 74, 67, 67, 48, 50, 48, 32, 32, 32, 32, 32, 32, -/* 0x2dc0 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 56, 54, 32, -/* 0x2dd0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x2de0 */ 32, 57, 53, 32, 76, 88, 74, 67, 67, 48, 50, 49, 32, 32, 32, 32, -/* 0x2df0 */ 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 56, -/* 0x2e00 */ 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x2e10 */ 83, 10, 32, 57, 54, 32, 76, 88, 74, 67, 67, 48, 50, 51, 32, 32, -/* 0x2e20 */ 32, 32, 32, 32, 48, 55, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x2e30 */ 57, 56,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x2e40 */ 78, 84, 83, 10, 32, 57, 55, 32, 76, 88, 85, 78, 70, 48, 51, 55, -/* 0x2e50 */ 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x2e60 */ 48, 49, 57, 57, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x2e70 */ 84, 69, 78, 84, 83, 10, 32, 57, 56, 32, 76, 88, 85, 78, 70, 51, -/* 0x2e80 */ 56, 54, 32, 32, 32, 32, 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, -/* 0x2e90 */ 32, 32, 48, 49, 57, 57, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x2ea0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 57, 57, 32, 76, 88, 85, 78, -/* 0x2eb0 */ 70, 51, 56, 55, 32, 32, 32, 32, 32, 32, 48, 57, 32, 32, 48, 32, -/* 0x2ec0 */ 32, 48, 32, 32, 48, 49, 57, 57, 55, 32, 32, 50, 42, 42, 48, 32, -/* 0x2ed0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 48, 48, 32, 76, 88, -/* 0x2ee0 */ 85, 78, 70, 51, 56, 56, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, -/* 0x2ef0 */ 48, 32, 32, 48, 32, 32, 48, 49, 57, 97, 48, 32, 32, 50, 42, 42, -/* 0x2f00 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 48, 49, 32, -/* 0x2f10 */ 76, 88, 85, 78, 70, 52, 56, 54, 32, 32, 32, 32, 32, 32, 48, 52, -/* 0x2f20 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 97, 51, 32, 32, 50, -/* 0x2f30 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 48, -/* 0x2f40 */ 50, 32, 76, 88, 85, 78, 70, 52, 56, 55, 32, 32, 32, 32, 32, 32, -/* 0x2f50 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 97, 55, 32, -/* 0x2f60 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x2f70 */ 49, 48, 51, 32, 76, 88, 77, 82, 85, 48, 54, 53, 32, 32, 32, 32, -/* 0x2f80 */ 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 97, -/* 0x2f90 */ 57, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x2fa0 */ 83, 10, 49, 48, 52, 32, 77, 82, 85, 66, 89, 84, 69, 51, 32, 32, -/* 0x2fb0 */ 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x2fc0 */ 57, 97,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x2fd0 */ 78, 84, 83, 10, 49, 48, 53, 32, 77, 82, 85, 65, 82, 66, 51, 48, -/* 0x2fe0 */ 32, 32, 32, 32, 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x2ff0 */ 48, 49, 57, 98, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x3000 */ 84, 69, 78, 84, 83, 10, 49, 48, 54, 32, 77, 82, 85, 66, 73, 84, -/* 0x3010 */ 83, 51, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, -/* 0x3020 */ 32, 32, 48, 49, 57, 98, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x3030 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 48, 55, 32, 77, 82, 85, 65, -/* 0x3040 */ 82, 66, 52, 48, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, -/* 0x3050 */ 32, 48, 32, 32, 48, 49, 57, 98, 51, 32, 32, 50, 42, 42, 48, 32, -/* 0x3060 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 48, 56, 32, 76, 88, -/* 0x3070 */ 77, 82, 85, 48, 55, 48, 32, 32, 32, 32, 32, 32, 48, 56, 32, 32, -/* 0x3080 */ 48, 32, 32, 48, 32, 32, 48, 49, 57, 98, 55, 32, 32, 50, 42, 42, -/* 0x3090 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 48, 57, 32, -/* 0x30a0 */ 77, 82, 85, 66, 89, 84, 69, 52, 32, 32, 32, 32, 32, 32, 48, 51, -/* 0x30b0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 98,102, 32, 32, 50, -/* 0x30c0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 49, -/* 0x30d0 */ 48, 32, 77, 82, 85, 66, 73, 84, 83, 52, 32, 32, 32, 32, 32, 32, -/* 0x30e0 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 99, 50, 32, -/* 0x30f0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x3100 */ 49, 49, 49, 32, 77, 82, 85, 65, 82, 66, 53, 48, 32, 32, 32, 32, -/* 0x3110 */ 32, 32, 48, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57, 99, -/* 0x3120 */ 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x3130 */ 83, 10, 49, 49, 50, 32, 76, 88, 77, 82, 85, 48, 56, 48, 32, 32, -/* 0x3140 */ 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3150 */ 57, 99, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x3160 */ 78, 84, 83, 10, 49, 49, 51, 32, 77, 82, 85, 66, 89, 84, 69, 53, -/* 0x3170 */ 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x3180 */ 48, 49, 57, 99,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x3190 */ 84, 69, 78, 84, 83, 10, 49, 49, 52, 32, 77, 82, 85, 65, 82, 66, -/* 0x31a0 */ 54, 48, 32, 32, 32, 32, 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, -/* 0x31b0 */ 32, 32, 48, 49, 57, 99,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x31c0 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 49, 53, 32, 77, 82, 85, 66, -/* 0x31d0 */ 73, 84, 83, 53, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, -/* 0x31e0 */ 32, 48, 32, 32, 48, 49, 57,100, 48, 32, 32, 50, 42, 42, 48, 32, -/* 0x31f0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 49, 54, 32, 77, 82, -/* 0x3200 */ 85, 65, 82, 66, 55, 48, 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, -/* 0x3210 */ 48, 32, 32, 48, 32, 32, 48, 49, 57,100, 50, 32, 32, 50, 42, 42, -/* 0x3220 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 49, 55, 32, -/* 0x3230 */ 76, 88, 77, 82, 85, 48, 57, 48, 32, 32, 32, 32, 32, 32, 48, 98, -/* 0x3240 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57,100, 54, 32, 32, 50, -/* 0x3250 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 49, -/* 0x3260 */ 56, 32, 77, 82, 85, 66, 89, 84, 69, 54, 32, 32, 32, 32, 32, 32, -/* 0x3270 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57,101, 49, 32, -/* 0x3280 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x3290 */ 49, 49, 57, 32, 77, 82, 85, 65, 82, 66, 56, 48, 32, 32, 32, 32, -/* 0x32a0 */ 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 57,101, -/* 0x32b0 */ 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x32c0 */ 83, 10, 49, 50, 48, 32, 77, 82, 85, 66, 73, 84, 83, 54, 32, 32, -/* 0x32d0 */ 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x32e0 */ 57,101, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x32f0 */ 78, 84, 83, 10, 49, 50, 49, 32, 77, 82, 85, 65, 82, 66, 57, 48, -/* 0x3300 */ 32, 32, 32, 32, 32, 32, 48, 52, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x3310 */ 48, 49, 57,101, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x3320 */ 84, 69, 78, 84, 83, 10, 49, 50, 50, 32, 76, 88, 77, 82, 85, 49, -/* 0x3330 */ 48, 48, 32, 32, 32, 32, 32, 32, 48, 49, 48, 32, 32, 48, 32, 32, -/* 0x3340 */ 48, 32, 32, 48, 49, 57,101, 97, 32, 32, 50, 42, 42, 48, 32, 32, -/* 0x3350 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 50, 51, 32, 76, 88, 85, -/* 0x3360 */ 78, 70, 48, 52, 48, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, -/* 0x3370 */ 32, 32, 48, 32, 32, 48, 49, 57,102, 97, 32, 32, 50, 42, 42, 48, -/* 0x3380 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 50, 52, 32, 76, -/* 0x3390 */ 88, 77, 82, 85, 49, 49, 48, 32, 32, 32, 32, 32, 32, 48, 51, 32, -/* 0x33a0 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 57,102,102, 32, 32, 50, 42, -/* 0x33b0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 50, 53, -/* 0x33c0 */ 32, 76, 88, 77, 82, 85, 49, 49, 49, 32, 32, 32, 32, 32, 32, 48, -/* 0x33d0 */ 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 48, 50, 32, 32, -/* 0x33e0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, -/* 0x33f0 */ 50, 54, 32, 76, 88, 85, 78, 70, 48, 52, 49, 32, 32, 32, 32, 32, -/* 0x3400 */ 32, 48, 55, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 48, 52, -/* 0x3410 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x3420 */ 10, 49, 50, 55, 32, 76, 88, 85, 78, 70, 48, 52, 50, 32, 32, 32, -/* 0x3430 */ 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 48, -/* 0x3440 */ 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x3450 */ 83, 10, 49, 50, 56, 32, 76, 69, 88, 69, 67, 48, 49, 54, 32, 32, -/* 0x3460 */ 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3470 */ 97, 48, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x3480 */ 78, 84, 83, 10, 49, 50, 57, 32, 76, 88, 77, 82, 85, 48, 49, 48, -/* 0x3490 */ 32, 32, 32, 32, 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x34a0 */ 48, 49, 97, 49, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x34b0 */ 84, 69, 78, 84, 83, 10, 49, 51, 48, 32, 76, 88, 74, 77, 80, 65, -/* 0x34c0 */ 48, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, -/* 0x34d0 */ 32, 32, 48, 49, 97, 49, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x34e0 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 51, 49, 32, 76, 88, 67, 65, -/* 0x34f0 */ 76, 76, 66, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, -/* 0x3500 */ 32, 48, 32, 32, 48, 49, 97, 49, 51, 32, 32, 50, 42, 42, 48, 32, -/* 0x3510 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 51, 50, 32, 76, 88, -/* 0x3520 */ 85, 78, 70, 48, 50, 49, 32, 32, 32, 32, 32, 32, 48, 54, 32, 32, -/* 0x3530 */ 48, 32, 32, 48, 32, 32, 48, 49, 97, 49, 53, 32, 32, 50, 42, 42, -/* 0x3540 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 51, 51, 32, -/* 0x3550 */ 76, 88, 77, 82, 85, 48, 50, 50, 32, 32, 32, 32, 32, 32, 48, 51, -/* 0x3560 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 49, 98, 32, 32, 50, -/* 0x3570 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 51, -/* 0x3580 */ 52, 32, 76, 88, 74, 77, 80, 65, 48, 49, 32, 32, 32, 32, 32, 32, -/* 0x3590 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 49,101, 32, -/* 0x35a0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x35b0 */ 49, 51, 53, 32, 76, 88, 67, 65, 76, 76, 66, 49, 32, 32, 32, 32, -/* 0x35c0 */ 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 50, -/* 0x35d0 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x35e0 */ 83, 10, 49, 51, 54, 32, 77, 82, 85, 66, 73, 84, 83, 49, 32, 32, -/* 0x35f0 */ 32, 32, 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3600 */ 97, 50, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x3610 */ 78, 84, 83, 10, 49, 51, 55, 32, 76, 88, 77, 82, 85, 48, 51, 48, -/* 0x3620 */ 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x3630 */ 48, 49, 97, 50, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x3640 */ 84, 69, 78, 84, 83, 10, 49, 51, 56, 32, 77, 82, 85, 66, 89, 84, -/* 0x3650 */ 69, 49, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, -/* 0x3660 */ 32, 32, 48, 49, 97, 50, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x3670 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 51, 57, 32, 77, 82, 85, 65, -/* 0x3680 */ 82, 66, 49, 48, 32, 32, 32, 32, 32, 32, 48, 49, 32, 32, 48, 32, -/* 0x3690 */ 32, 48, 32, 32, 48, 49, 97, 50, 55, 32, 32, 50, 42, 42, 48, 32, -/* 0x36a0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 52, 48, 32, 76, 88, -/* 0x36b0 */ 77, 82, 85, 48, 52, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, -/* 0x36c0 */ 48, 32, 32, 48, 32, 32, 48, 49, 97, 50, 56, 32, 32, 50, 42, 42, -/* 0x36d0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 52, 49, 32, -/* 0x36e0 */ 76, 88, 85, 78, 70, 48, 51, 48, 32, 32, 32, 32, 32, 32, 48, 54, -/* 0x36f0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 50, 97, 32, 32, 50, -/* 0x3700 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 52, -/* 0x3710 */ 50, 32, 76, 88, 74, 67, 67, 48, 48, 48, 32, 32, 32, 32, 32, 32, -/* 0x3720 */ 48, 56, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 51, 48, 32, -/* 0x3730 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x3740 */ 49, 52, 51, 32, 76, 88, 67, 74, 48, 77, 82, 85, 32, 32, 32, 32, -/* 0x3750 */ 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 51, -/* 0x3760 */ 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x3770 */ 83, 10, 49, 52, 52, 32, 76, 88, 67, 74, 49, 77, 82, 85, 32, 32, -/* 0x3780 */ 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3790 */ 97, 51, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x37a0 */ 78, 84, 83, 10, 49, 52, 53, 32, 76, 88, 67, 65, 76, 74, 77, 80, -/* 0x37b0 */ 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x37c0 */ 48, 49, 97, 51,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x37d0 */ 84, 69, 78, 84, 83, 10, 49, 52, 54, 32, 76, 88, 67, 65, 76, 76, -/* 0x37e0 */ 48, 48, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, -/* 0x37f0 */ 32, 32, 48, 49, 97, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x3800 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 52, 55, 32, 76, 88, 67, 65, -/* 0x3810 */ 76, 76, 48, 49, 32, 32, 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, -/* 0x3820 */ 32, 48, 32, 32, 48, 49, 97, 52, 50, 32, 32, 50, 42, 42, 48, 32, -/* 0x3830 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 52, 56, 32, 76, 88, -/* 0x3840 */ 67, 74, 50, 77, 82, 85, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, -/* 0x3850 */ 48, 32, 32, 48, 32, 32, 48, 49, 97, 52, 53, 32, 32, 50, 42, 42, -/* 0x3860 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 52, 57, 32, -/* 0x3870 */ 76, 88, 67, 74, 52, 77, 82, 85, 32, 32, 32, 32, 32, 32, 48, 50, -/* 0x3880 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 52, 55, 32, 32, 50, -/* 0x3890 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 53, -/* 0x38a0 */ 48, 32, 76, 88, 67, 74, 54, 77, 82, 85, 32, 32, 32, 32, 32, 32, -/* 0x38b0 */ 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 52, 57, 32, -/* 0x38c0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x38d0 */ 49, 53, 49, 32, 76, 88, 67, 74, 55, 77, 82, 85, 32, 32, 32, 32, -/* 0x38e0 */ 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 52, -/* 0x38f0 */ 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x3900 */ 83, 10, 49, 53, 50, 32, 76, 88, 67, 74, 56, 77, 82, 85, 32, 32, -/* 0x3910 */ 32, 32, 32, 32, 48, 51, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3920 */ 97, 52,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x3930 */ 78, 84, 83, 10, 49, 53, 51, 32, 76, 88, 85, 78, 70, 48, 51, 52, -/* 0x3940 */ 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x3950 */ 48, 49, 97, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x3960 */ 84, 69, 78, 84, 83, 10, 49, 53, 52, 32, 76, 88, 77, 82, 85, 48, -/* 0x3970 */ 53, 53, 32, 32, 32, 32, 32, 32, 48, 50, 32, 32, 48, 32, 32, 48, -/* 0x3980 */ 32, 32, 48, 49, 97, 53, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x3990 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 53, 53, 32, 77, 82, 85, 66, -/* 0x39a0 */ 89, 84, 69, 50, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, 48, 32, -/* 0x39b0 */ 32, 48, 32, 32, 48, 49, 97, 53, 55, 32, 32, 50, 42, 42, 48, 32, -/* 0x39c0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 53, 54, 32, 77, 82, -/* 0x39d0 */ 85, 66, 73, 84, 83, 50, 32, 32, 32, 32, 32, 32, 48, 53, 32, 32, -/* 0x39e0 */ 48, 32, 32, 48, 32, 32, 48, 49, 97, 53, 99, 32, 32, 50, 42, 42, -/* 0x39f0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 53, 55, 32, -/* 0x3a00 */ 77, 82, 85, 65, 82, 66, 50, 48, 32, 32, 32, 32, 32, 32, 48, 53, -/* 0x3a10 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 54, 49, 32, 32, 50, -/* 0x3a20 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 53, -/* 0x3a30 */ 56, 32, 76, 88, 77, 82, 85, 48, 53, 55, 32, 32, 32, 32, 32, 32, -/* 0x3a40 */ 48, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 54, 54, 32, -/* 0x3a50 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, -/* 0x3a60 */ 49, 53, 57, 32, 76, 88, 77, 82, 85, 48, 53, 56, 32, 32, 32, 32, -/* 0x3a70 */ 32, 32, 48, 49, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 54, -/* 0x3a80 */ 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x3a90 */ 83, 10, 49, 54, 48, 32, 76, 88, 85, 78, 70, 48, 51, 53, 32, 32, -/* 0x3aa0 */ 32, 32, 32, 32, 48, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3ab0 */ 97, 54,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x3ac0 */ 78, 84, 83, 10, 49, 54, 49, 32, 99,116,111,107, 51, 50, 46, 48, -/* 0x3ad0 */ 48, 32, 32, 32, 32, 32, 48, 55, 32, 32, 48, 32, 32, 48, 32, 32, -/* 0x3ae0 */ 48, 49, 97, 55, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x3af0 */ 84, 69, 78, 84, 83, 10, 49, 54, 50, 32, 99,116,111,107, 51, 50, -/* 0x3b00 */ 46, 49, 48, 32, 32, 32, 32, 32, 48,101, 32, 32, 48, 32, 32, 48, -/* 0x3b10 */ 32, 32, 48, 49, 97, 55, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x3b20 */ 79, 78, 84, 69, 78, 84, 83, 10, 49, 54, 51, 32, 99,116,111,107, -/* 0x3b30 */ 51, 50, 46, 50, 48, 32, 32, 32, 32, 32, 48, 50, 48, 32, 32, 48, -/* 0x3b40 */ 32, 32, 48, 32, 32, 48, 49, 97, 56, 56, 32, 32, 50, 42, 42, 48, -/* 0x3b50 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 54, 52, 32, 99, -/* 0x3b60 */ 116,111,107, 51, 50, 46, 51, 48, 32, 32, 32, 32, 32, 48, 97, 32, -/* 0x3b70 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 97, 56, 32, 32, 50, 42, -/* 0x3b80 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, 54, 53, -/* 0x3b90 */ 32, 99,116,111,107, 51, 50, 46, 52, 48, 32, 32, 32, 32, 32, 48, -/* 0x3ba0 */ 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 98, 50, 32, 32, -/* 0x3bb0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 49, -/* 0x3bc0 */ 54, 54, 32, 76, 69, 88, 69, 67, 48, 49, 55, 32, 32, 32, 32, 32, -/* 0x3bd0 */ 32, 48, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 97, 98, 55, -/* 0x3be0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x3bf0 */ 10, 49, 54, 55, 32, 76, 69, 88, 69, 67, 48, 50, 48, 32, 32, 32, -/* 0x3c00 */ 32, 32, 32, 48, 55, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, -/* 0x3c10 */ 97, 98, 99, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, -/* 0x3c20 */ 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, -/* 0x3c30 */ 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x3c40 */ 100, 32, 32, 78, 50, 66, 83, 77, 65, 49, 48, 32, 48, 32, 78, 50, -/* 0x3c50 */ 66, 83, 77, 65, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x3c60 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 70, 65, 83, 49, 49, -/* 0x3c70 */ 32, 48, 32, 78, 50, 66, 70, 65, 83, 49, 49, 10, 48, 48, 48, 48, -/* 0x3c80 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, -/* 0x3c90 */ 68, 69, 67, 49, 48, 32, 48, 32, 78, 50, 66, 68, 69, 67, 49, 48, -/* 0x3ca0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x3cb0 */ 32, 32, 78, 50, 66, 68, 69, 67, 50, 48, 32, 48, 32, 78, 50, 66, -/* 0x3cc0 */ 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x3cd0 */ 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 68, 69, 67, 51, 48, 32, -/* 0x3ce0 */ 48, 32, 78, 50, 66, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, -/* 0x3cf0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 68, -/* 0x3d00 */ 69, 67, 53, 48, 32, 48, 32, 78, 50, 66, 68, 69, 67, 53, 48, 10, -/* 0x3d10 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x3d20 */ 32, 78, 50, 66, 70, 65, 83, 54, 49, 32, 48, 32, 78, 50, 66, 70, -/* 0x3d30 */ 65, 83, 54, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x3d40 */ 32, 32, 32,100, 32, 32, 78, 50, 66, 68, 69, 67, 54, 48, 32, 48, -/* 0x3d50 */ 32, 78, 50, 66, 68, 69, 67, 54, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x3d60 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 83, 77, -/* 0x3d70 */ 65, 49, 48, 32, 48, 32, 78, 50, 68, 83, 77, 65, 49, 48, 10, 48, -/* 0x3d80 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x3d90 */ 78, 50, 68, 70, 65, 83, 49, 49, 32, 48, 32, 78, 50, 68, 70, 65, -/* 0x3da0 */ 83, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x3db0 */ 32, 32,100, 32, 32, 78, 50, 68, 68, 69, 67, 49, 48, 32, 48, 32, -/* 0x3dc0 */ 78, 50, 68, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x3dd0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 68, 69, 67, -/* 0x3de0 */ 50, 48, 32, 48, 32, 78, 50, 68, 68, 69, 67, 50, 48, 10, 48, 48, -/* 0x3df0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, -/* 0x3e00 */ 50, 68, 68, 69, 67, 51, 48, 32, 48, 32, 78, 50, 68, 68, 69, 67, -/* 0x3e10 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x3e20 */ 32,100, 32, 32, 78, 50, 68, 68, 69, 67, 53, 48, 32, 48, 32, 78, -/* 0x3e30 */ 50, 68, 68, 69, 67, 53, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x3e40 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 70, 65, 83, 54, -/* 0x3e50 */ 49, 32, 48, 32, 78, 50, 68, 70, 65, 83, 54, 49, 10, 48, 48, 48, -/* 0x3e60 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, -/* 0x3e70 */ 68, 68, 69, 67, 54, 48, 32, 48, 32, 78, 50, 68, 68, 69, 67, 54, -/* 0x3e80 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x3e90 */ 100, 32, 32, 78, 50, 69, 83, 77, 65, 49, 48, 32, 48, 32, 78, 50, -/* 0x3ea0 */ 69, 83, 77, 65, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x3eb0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 49, 49, -/* 0x3ec0 */ 32, 48, 32, 78, 50, 69, 70, 65, 83, 49, 49, 10, 48, 48, 48, 48, -/* 0x3ed0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, -/* 0x3ee0 */ 68, 69, 67, 49, 48, 32, 48, 32, 78, 50, 69, 68, 69, 67, 49, 48, -/* 0x3ef0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x3f00 */ 32, 32, 78, 50, 69, 68, 69, 67, 50, 48, 32, 48, 32, 78, 50, 69, -/* 0x3f10 */ 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x3f20 */ 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 32, -/* 0x3f30 */ 48, 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, -/* 0x3f40 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 68, -/* 0x3f50 */ 69, 67, 53, 48, 32, 48, 32, 78, 50, 69, 68, 69, 67, 53, 48, 10, -/* 0x3f60 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x3f70 */ 32, 78, 50, 69, 70, 65, 83, 54, 49, 32, 48, 32, 78, 50, 69, 70, -/* 0x3f80 */ 65, 83, 54, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x3f90 */ 32, 32, 32,100, 32, 32, 78, 50, 69, 68, 69, 67, 54, 48, 32, 48, -/* 0x3fa0 */ 32, 78, 50, 69, 68, 69, 67, 54, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x3fb0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, -/* 0x3fc0 */ 82, 48, 48, 32, 48, 32, 67, 65, 76, 76, 84, 82, 48, 48, 10, 48, -/* 0x3fd0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x3fe0 */ 67, 65, 76, 76, 84, 82, 49, 48, 32, 48, 32, 67, 65, 76, 76, 84, -/* 0x3ff0 */ 82, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x4000 */ 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 49, 49, 32, 48, 32, -/* 0x4010 */ 67, 65, 76, 76, 84, 82, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x4020 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, -/* 0x4030 */ 49, 51, 32, 48, 32, 67, 65, 76, 76, 84, 82, 49, 51, 10, 48, 48, -/* 0x4040 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, -/* 0x4050 */ 88, 85, 78, 70, 48, 49, 48, 32, 48, 32, 76, 88, 85, 78, 70, 48, -/* 0x4060 */ 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4070 */ 32,100, 32, 32, 76, 88, 74, 67, 67, 48, 49, 48, 32, 48, 32, 76, -/* 0x4080 */ 88, 74, 67, 67, 48, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x4090 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 48, 51, -/* 0x40a0 */ 55, 32, 48, 32, 76, 88, 85, 78, 70, 48, 51, 55, 10, 48, 48, 48, -/* 0x40b0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, -/* 0x40c0 */ 77, 82, 85, 48, 55, 48, 32, 48, 32, 76, 88, 77, 82, 85, 48, 55, -/* 0x40d0 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x40e0 */ 100, 32, 32, 76, 88, 77, 82, 85, 49, 48, 48, 32, 48, 32, 76, 88, -/* 0x40f0 */ 77, 82, 85, 49, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x4100 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 48, 52, 48, -/* 0x4110 */ 32, 48, 32, 76, 88, 85, 78, 70, 48, 52, 48, 10, 48, 48, 48, 48, -/* 0x4120 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, -/* 0x4130 */ 78, 70, 48, 52, 50, 32, 48, 32, 76, 88, 85, 78, 70, 48, 52, 50, -/* 0x4140 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x4150 */ 32, 32, 76, 88, 77, 82, 85, 48, 51, 48, 32, 48, 32, 76, 88, 77, -/* 0x4160 */ 82, 85, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x4170 */ 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 48, 51, 48, 32, -/* 0x4180 */ 48, 32, 76, 88, 85, 78, 70, 48, 51, 48, 10, 48, 48, 48, 48, 48, -/* 0x4190 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 67, 74, -/* 0x41a0 */ 56, 77, 82, 85, 32, 48, 32, 76, 88, 67, 74, 56, 77, 82, 85, 10, -/* 0x41b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x41c0 */ 32, 76, 88, 85, 78, 70, 48, 51, 52, 32, 48, 32, 76, 88, 85, 78, -/* 0x41d0 */ 70, 48, 51, 52, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x41e0 */ 32, 32, 32,100, 32, 32, 99,116,111,107, 51, 50, 46, 48, 48, 32, -/* 0x41f0 */ 48, 32, 99,116,111,107, 51, 50, 46, 48, 48, 10, 48, 48, 48, 48, -/* 0x4200 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 99,116,111, -/* 0x4210 */ 107, 51, 50, 46, 49, 48, 32, 48, 32, 99,116,111,107, 51, 50, 46, -/* 0x4220 */ 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4230 */ 32,100, 32, 32, 99,116,111,107, 51, 50, 46, 50, 48, 32, 48, 32, -/* 0x4240 */ 99,116,111,107, 51, 50, 46, 50, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x4250 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 99,116,111,107, 51, -/* 0x4260 */ 50, 46, 52, 48, 32, 48, 32, 99,116,111,107, 51, 50, 46, 52, 48, -/* 0x4270 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x4280 */ 32, 32, 76, 69, 88, 69, 67, 48, 50, 48, 32, 48, 32, 76, 69, 88, -/* 0x4290 */ 69, 67, 48, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x42a0 */ 32, 32, 32, 32,100, 32, 32, 76, 69, 88, 69, 67, 48, 48, 48, 32, -/* 0x42b0 */ 48, 32, 76, 69, 88, 69, 67, 48, 48, 48, 10, 48, 48, 48, 48, 48, -/* 0x42c0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 69, 88, 69, -/* 0x42d0 */ 67, 48, 48, 57, 32, 48, 32, 76, 69, 88, 69, 67, 48, 48, 57, 10, -/* 0x42e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x42f0 */ 32, 76, 69, 88, 69, 67, 48, 49, 48, 32, 48, 32, 76, 69, 88, 69, -/* 0x4300 */ 67, 48, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x4310 */ 32, 32, 32,100, 32, 32, 78, 50, 66, 70, 65, 83, 49, 48, 32, 48, -/* 0x4320 */ 32, 78, 50, 66, 70, 65, 83, 49, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x4330 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 83, 77, -/* 0x4340 */ 65, 50, 48, 32, 48, 32, 78, 50, 66, 83, 77, 65, 50, 48, 10, 48, -/* 0x4350 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x4360 */ 78, 50, 66, 70, 65, 83, 50, 48, 32, 48, 32, 78, 50, 66, 70, 65, -/* 0x4370 */ 83, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x4380 */ 32, 32,100, 32, 32, 78, 50, 66, 83, 77, 65, 51, 48, 32, 48, 32, -/* 0x4390 */ 78, 50, 66, 83, 77, 65, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x43a0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 70, 65, 83, -/* 0x43b0 */ 51, 48, 32, 48, 32, 78, 50, 66, 70, 65, 83, 51, 48, 10, 48, 48, -/* 0x43c0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, -/* 0x43d0 */ 50, 66, 83, 77, 65, 52, 48, 32, 48, 32, 78, 50, 66, 83, 77, 65, -/* 0x43e0 */ 52, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x43f0 */ 32,100, 32, 32, 78, 50, 66, 70, 65, 83, 52, 48, 32, 48, 32, 78, -/* 0x4400 */ 50, 66, 70, 65, 83, 52, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x4410 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 83, 77, 65, 53, -/* 0x4420 */ 48, 32, 48, 32, 78, 50, 66, 83, 77, 65, 53, 48, 10, 48, 48, 48, -/* 0x4430 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, -/* 0x4440 */ 66, 70, 65, 83, 53, 48, 32, 48, 32, 78, 50, 66, 70, 65, 83, 53, -/* 0x4450 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x4460 */ 100, 32, 32, 78, 50, 66, 83, 77, 65, 54, 48, 32, 48, 32, 78, 50, -/* 0x4470 */ 66, 83, 77, 65, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x4480 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 50, 66, 70, 65, 83, 54, 48, -/* 0x4490 */ 32, 48, 32, 78, 50, 66, 70, 65, 83, 54, 48, 10, 48, 48, 48, 48, -/* 0x44a0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, -/* 0x44b0 */ 70, 65, 83, 49, 48, 32, 48, 32, 78, 50, 68, 70, 65, 83, 49, 48, -/* 0x44c0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x44d0 */ 32, 32, 78, 50, 68, 83, 77, 65, 50, 48, 32, 48, 32, 78, 50, 68, -/* 0x44e0 */ 83, 77, 65, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x44f0 */ 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 70, 65, 83, 50, 48, 32, -/* 0x4500 */ 48, 32, 78, 50, 68, 70, 65, 83, 50, 48, 10, 48, 48, 48, 48, 48, -/* 0x4510 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 83, -/* 0x4520 */ 77, 65, 51, 48, 32, 48, 32, 78, 50, 68, 83, 77, 65, 51, 48, 10, -/* 0x4530 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x4540 */ 32, 78, 50, 68, 70, 65, 83, 51, 48, 32, 48, 32, 78, 50, 68, 70, -/* 0x4550 */ 65, 83, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x4560 */ 32, 32, 32,100, 32, 32, 78, 50, 68, 83, 77, 65, 52, 48, 32, 48, -/* 0x4570 */ 32, 78, 50, 68, 83, 77, 65, 52, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x4580 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 70, 65, -/* 0x4590 */ 83, 52, 48, 32, 48, 32, 78, 50, 68, 70, 65, 83, 52, 48, 10, 48, -/* 0x45a0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x45b0 */ 78, 50, 68, 83, 77, 65, 53, 48, 32, 48, 32, 78, 50, 68, 83, 77, -/* 0x45c0 */ 65, 53, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x45d0 */ 32, 32,100, 32, 32, 78, 50, 68, 70, 65, 83, 53, 48, 32, 48, 32, -/* 0x45e0 */ 78, 50, 68, 70, 65, 83, 53, 48, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x45f0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 68, 83, 77, 65, -/* 0x4600 */ 54, 48, 32, 48, 32, 78, 50, 68, 83, 77, 65, 54, 48, 10, 48, 48, -/* 0x4610 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, -/* 0x4620 */ 50, 68, 70, 65, 83, 54, 48, 32, 48, 32, 78, 50, 68, 70, 65, 83, -/* 0x4630 */ 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4640 */ 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 49, 48, 32, 48, 32, 78, -/* 0x4650 */ 50, 69, 70, 65, 83, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x4660 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 83, 77, 65, 50, -/* 0x4670 */ 48, 32, 48, 32, 78, 50, 69, 83, 77, 65, 50, 48, 10, 48, 48, 48, -/* 0x4680 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, -/* 0x4690 */ 69, 70, 65, 83, 50, 48, 32, 48, 32, 78, 50, 69, 70, 65, 83, 50, -/* 0x46a0 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x46b0 */ 100, 32, 32, 78, 50, 69, 83, 77, 65, 51, 48, 32, 48, 32, 78, 50, -/* 0x46c0 */ 69, 83, 77, 65, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x46d0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 51, 48, -/* 0x46e0 */ 32, 48, 32, 78, 50, 69, 70, 65, 83, 51, 48, 10, 48, 48, 48, 48, -/* 0x46f0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, -/* 0x4700 */ 83, 77, 65, 52, 48, 32, 48, 32, 78, 50, 69, 83, 77, 65, 52, 48, -/* 0x4710 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x4720 */ 32, 32, 78, 50, 69, 70, 65, 83, 52, 48, 32, 48, 32, 78, 50, 69, -/* 0x4730 */ 70, 65, 83, 52, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x4740 */ 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 83, 77, 65, 53, 48, 32, -/* 0x4750 */ 48, 32, 78, 50, 69, 83, 77, 65, 53, 48, 10, 48, 48, 48, 48, 48, -/* 0x4760 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 50, 69, 70, -/* 0x4770 */ 65, 83, 53, 48, 32, 48, 32, 78, 50, 69, 70, 65, 83, 53, 48, 10, -/* 0x4780 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x4790 */ 32, 78, 50, 69, 83, 77, 65, 54, 48, 32, 48, 32, 78, 50, 69, 83, -/* 0x47a0 */ 77, 65, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x47b0 */ 32, 32, 32,100, 32, 32, 78, 50, 69, 70, 65, 83, 54, 48, 32, 48, -/* 0x47c0 */ 32, 78, 50, 69, 70, 65, 83, 54, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x47d0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, -/* 0x47e0 */ 68, 69, 67, 48, 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, -/* 0x47f0 */ 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4800 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 48, -/* 0x4810 */ 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, -/* 0x4820 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, -/* 0x4830 */ 65, 95, 68, 69, 67, 49, 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, -/* 0x4840 */ 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x4850 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, -/* 0x4860 */ 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, -/* 0x4870 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, -/* 0x4880 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 48, 32, 76, 90, 77, 65, -/* 0x4890 */ 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x48a0 */ 108, 32, 32, 32, 32,100, 32, 32, 67, 84, 67, 76, 69, 86, 69, 49, -/* 0x48b0 */ 32, 48, 32, 67, 84, 67, 76, 69, 86, 69, 49, 10, 48, 48, 48, 48, -/* 0x48c0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, -/* 0x48d0 */ 76, 84, 82, 48, 49, 32, 48, 32, 67, 65, 76, 76, 84, 82, 48, 49, -/* 0x48e0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x48f0 */ 32, 32, 67, 84, 66, 83, 72, 82, 48, 49, 32, 48, 32, 67, 84, 66, -/* 0x4900 */ 83, 72, 82, 48, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x4910 */ 32, 32, 32, 32,100, 32, 32, 67, 84, 66, 82, 79, 82, 48, 49, 32, -/* 0x4920 */ 48, 32, 67, 84, 66, 82, 79, 82, 48, 49, 10, 48, 48, 48, 48, 48, -/* 0x4930 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 66, 83, -/* 0x4940 */ 87, 65, 48, 49, 32, 48, 32, 67, 84, 66, 83, 87, 65, 48, 49, 10, -/* 0x4950 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x4960 */ 32, 67, 65, 76, 76, 84, 82, 48, 50, 32, 48, 32, 67, 65, 76, 76, -/* 0x4970 */ 84, 82, 48, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x4980 */ 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 69, 56, 32, 48, -/* 0x4990 */ 32, 67, 65, 76, 76, 84, 82, 69, 56, 10, 48, 48, 48, 48, 48, 48, -/* 0x49a0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, -/* 0x49b0 */ 82, 69, 57, 32, 48, 32, 67, 65, 76, 76, 84, 82, 69, 57, 10, 48, -/* 0x49c0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x49d0 */ 67, 84, 67, 76, 69, 86, 69, 50, 32, 48, 32, 67, 84, 67, 76, 69, -/* 0x49e0 */ 86, 69, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x49f0 */ 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 49, 50, 32, 48, 32, -/* 0x4a00 */ 67, 65, 76, 76, 84, 82, 49, 50, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x4a10 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 66, 83, 72, 82, -/* 0x4a20 */ 49, 49, 32, 48, 32, 67, 84, 66, 83, 72, 82, 49, 49, 10, 48, 48, -/* 0x4a30 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, -/* 0x4a40 */ 84, 66, 82, 79, 82, 49, 49, 32, 48, 32, 67, 84, 66, 82, 79, 82, -/* 0x4a50 */ 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4a60 */ 32,100, 32, 32, 67, 84, 66, 83, 87, 65, 49, 49, 32, 48, 32, 67, -/* 0x4a70 */ 84, 66, 83, 87, 65, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x4a80 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 69, 88, 69, 67, 48, 49, -/* 0x4a90 */ 53, 32, 48, 32, 76, 69, 88, 69, 67, 48, 49, 53, 10, 48, 48, 48, -/* 0x4aa0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, -/* 0x4ab0 */ 85, 78, 70, 48, 48, 48, 32, 48, 32, 76, 88, 85, 78, 70, 48, 48, -/* 0x4ac0 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x4ad0 */ 100, 32, 32, 76, 88, 85, 78, 70, 48, 48, 50, 32, 48, 32, 76, 88, -/* 0x4ae0 */ 85, 78, 70, 48, 48, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x4af0 */ 108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 66, 89, 84, 69, 48, -/* 0x4b00 */ 32, 48, 32, 77, 82, 85, 66, 89, 84, 69, 48, 10, 48, 48, 48, 48, -/* 0x4b10 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 77, -/* 0x4b20 */ 82, 85, 48, 48, 53, 32, 48, 32, 76, 88, 77, 82, 85, 48, 48, 53, -/* 0x4b30 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x4b40 */ 32, 32, 76, 88, 77, 82, 85, 48, 48, 54, 32, 48, 32, 76, 88, 77, -/* 0x4b50 */ 82, 85, 48, 48, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x4b60 */ 32, 32, 32, 32,100, 32, 32, 76, 88, 77, 82, 85, 48, 48, 55, 32, -/* 0x4b70 */ 48, 32, 76, 88, 77, 82, 85, 48, 48, 55, 10, 48, 48, 48, 48, 48, -/* 0x4b80 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, -/* 0x4b90 */ 70, 48, 48, 56, 32, 48, 32, 76, 88, 85, 78, 70, 48, 48, 56, 10, -/* 0x4ba0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x4bb0 */ 32, 76, 88, 77, 82, 85, 48, 52, 53, 32, 48, 32, 76, 88, 77, 82, -/* 0x4bc0 */ 85, 48, 52, 53, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x4bd0 */ 32, 32, 32,100, 32, 32, 76, 88, 77, 82, 85, 48, 52, 54, 32, 48, -/* 0x4be0 */ 32, 76, 88, 77, 82, 85, 48, 52, 54, 10, 48, 48, 48, 48, 48, 48, -/* 0x4bf0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 74, 67, 67, -/* 0x4c00 */ 48, 50, 48, 32, 48, 32, 76, 88, 74, 67, 67, 48, 50, 48, 10, 48, -/* 0x4c10 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x4c20 */ 76, 88, 74, 67, 67, 48, 50, 49, 32, 48, 32, 76, 88, 74, 67, 67, -/* 0x4c30 */ 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x4c40 */ 32, 32,100, 32, 32, 76, 88, 74, 67, 67, 48, 50, 51, 32, 48, 32, -/* 0x4c50 */ 76, 88, 74, 67, 67, 48, 50, 51, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x4c60 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 51, -/* 0x4c70 */ 56, 54, 32, 48, 32, 76, 88, 85, 78, 70, 51, 56, 54, 10, 48, 48, -/* 0x4c80 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, -/* 0x4c90 */ 88, 85, 78, 70, 51, 56, 55, 32, 48, 32, 76, 88, 85, 78, 70, 51, -/* 0x4ca0 */ 56, 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4cb0 */ 32,100, 32, 32, 76, 88, 85, 78, 70, 51, 56, 56, 32, 48, 32, 76, -/* 0x4cc0 */ 88, 85, 78, 70, 51, 56, 56, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x4cd0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 52, 56, -/* 0x4ce0 */ 54, 32, 48, 32, 76, 88, 85, 78, 70, 52, 56, 54, 10, 48, 48, 48, -/* 0x4cf0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, -/* 0x4d00 */ 85, 78, 70, 52, 56, 55, 32, 48, 32, 76, 88, 85, 78, 70, 52, 56, -/* 0x4d10 */ 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x4d20 */ 100, 32, 32, 76, 88, 77, 82, 85, 48, 54, 53, 32, 48, 32, 76, 88, -/* 0x4d30 */ 77, 82, 85, 48, 54, 53, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x4d40 */ 108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 66, 89, 84, 69, 51, -/* 0x4d50 */ 32, 48, 32, 77, 82, 85, 66, 89, 84, 69, 51, 10, 48, 48, 48, 48, -/* 0x4d60 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, -/* 0x4d70 */ 65, 82, 66, 51, 48, 32, 48, 32, 77, 82, 85, 65, 82, 66, 51, 48, -/* 0x4d80 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x4d90 */ 32, 32, 77, 82, 85, 66, 73, 84, 83, 51, 32, 48, 32, 77, 82, 85, -/* 0x4da0 */ 66, 73, 84, 83, 51, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x4db0 */ 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 65, 82, 66, 52, 48, 32, -/* 0x4dc0 */ 48, 32, 77, 82, 85, 65, 82, 66, 52, 48, 10, 48, 48, 48, 48, 48, -/* 0x4dd0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 66, -/* 0x4de0 */ 89, 84, 69, 52, 32, 48, 32, 77, 82, 85, 66, 89, 84, 69, 52, 10, -/* 0x4df0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x4e00 */ 32, 77, 82, 85, 66, 73, 84, 83, 52, 32, 48, 32, 77, 82, 85, 66, -/* 0x4e10 */ 73, 84, 83, 52, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x4e20 */ 32, 32, 32,100, 32, 32, 77, 82, 85, 65, 82, 66, 53, 48, 32, 48, -/* 0x4e30 */ 32, 77, 82, 85, 65, 82, 66, 53, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x4e40 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 77, 82, 85, -/* 0x4e50 */ 48, 56, 48, 32, 48, 32, 76, 88, 77, 82, 85, 48, 56, 48, 10, 48, -/* 0x4e60 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x4e70 */ 77, 82, 85, 66, 89, 84, 69, 53, 32, 48, 32, 77, 82, 85, 66, 89, -/* 0x4e80 */ 84, 69, 53, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x4e90 */ 32, 32,100, 32, 32, 77, 82, 85, 65, 82, 66, 54, 48, 32, 48, 32, -/* 0x4ea0 */ 77, 82, 85, 65, 82, 66, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x4eb0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 66, 73, 84, -/* 0x4ec0 */ 83, 53, 32, 48, 32, 77, 82, 85, 66, 73, 84, 83, 53, 10, 48, 48, -/* 0x4ed0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, -/* 0x4ee0 */ 82, 85, 65, 82, 66, 55, 48, 32, 48, 32, 77, 82, 85, 65, 82, 66, -/* 0x4ef0 */ 55, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x4f00 */ 32,100, 32, 32, 76, 88, 77, 82, 85, 48, 57, 48, 32, 48, 32, 76, -/* 0x4f10 */ 88, 77, 82, 85, 48, 57, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x4f20 */ 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 66, 89, 84, 69, -/* 0x4f30 */ 54, 32, 48, 32, 77, 82, 85, 66, 89, 84, 69, 54, 10, 48, 48, 48, -/* 0x4f40 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, -/* 0x4f50 */ 85, 65, 82, 66, 56, 48, 32, 48, 32, 77, 82, 85, 65, 82, 66, 56, -/* 0x4f60 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x4f70 */ 100, 32, 32, 77, 82, 85, 66, 73, 84, 83, 54, 32, 48, 32, 77, 82, -/* 0x4f80 */ 85, 66, 73, 84, 83, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x4f90 */ 108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 65, 82, 66, 57, 48, -/* 0x4fa0 */ 32, 48, 32, 77, 82, 85, 65, 82, 66, 57, 48, 10, 48, 48, 48, 48, -/* 0x4fb0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 77, -/* 0x4fc0 */ 82, 85, 49, 49, 48, 32, 48, 32, 76, 88, 77, 82, 85, 49, 49, 48, -/* 0x4fd0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x4fe0 */ 32, 32, 76, 88, 77, 82, 85, 49, 49, 49, 32, 48, 32, 76, 88, 77, -/* 0x4ff0 */ 82, 85, 49, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x5000 */ 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 48, 52, 49, 32, -/* 0x5010 */ 48, 32, 76, 88, 85, 78, 70, 48, 52, 49, 10, 48, 48, 48, 48, 48, -/* 0x5020 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 69, 88, 69, -/* 0x5030 */ 67, 48, 49, 54, 32, 48, 32, 76, 69, 88, 69, 67, 48, 49, 54, 10, -/* 0x5040 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x5050 */ 32, 76, 88, 77, 82, 85, 48, 49, 48, 32, 48, 32, 76, 88, 77, 82, -/* 0x5060 */ 85, 48, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x5070 */ 32, 32, 32,100, 32, 32, 76, 88, 74, 77, 80, 65, 48, 48, 32, 48, -/* 0x5080 */ 32, 76, 88, 74, 77, 80, 65, 48, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x5090 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 67, 65, 76, -/* 0x50a0 */ 76, 66, 48, 32, 48, 32, 76, 88, 67, 65, 76, 76, 66, 48, 10, 48, -/* 0x50b0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x50c0 */ 76, 88, 85, 78, 70, 48, 50, 49, 32, 48, 32, 76, 88, 85, 78, 70, -/* 0x50d0 */ 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x50e0 */ 32, 32,100, 32, 32, 76, 88, 77, 82, 85, 48, 50, 50, 32, 48, 32, -/* 0x50f0 */ 76, 88, 77, 82, 85, 48, 50, 50, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x5100 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 74, 77, 80, 65, -/* 0x5110 */ 48, 49, 32, 48, 32, 76, 88, 74, 77, 80, 65, 48, 49, 10, 48, 48, -/* 0x5120 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, -/* 0x5130 */ 88, 67, 65, 76, 76, 66, 49, 32, 48, 32, 76, 88, 67, 65, 76, 76, -/* 0x5140 */ 66, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x5150 */ 32,100, 32, 32, 77, 82, 85, 66, 73, 84, 83, 49, 32, 48, 32, 77, -/* 0x5160 */ 82, 85, 66, 73, 84, 83, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x5170 */ 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 66, 89, 84, 69, -/* 0x5180 */ 49, 32, 48, 32, 77, 82, 85, 66, 89, 84, 69, 49, 10, 48, 48, 48, -/* 0x5190 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, -/* 0x51a0 */ 85, 65, 82, 66, 49, 48, 32, 48, 32, 77, 82, 85, 65, 82, 66, 49, -/* 0x51b0 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x51c0 */ 100, 32, 32, 76, 88, 77, 82, 85, 48, 52, 48, 32, 48, 32, 76, 88, -/* 0x51d0 */ 77, 82, 85, 48, 52, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x51e0 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 88, 74, 67, 67, 48, 48, 48, -/* 0x51f0 */ 32, 48, 32, 76, 88, 74, 67, 67, 48, 48, 48, 10, 48, 48, 48, 48, -/* 0x5200 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 67, -/* 0x5210 */ 74, 48, 77, 82, 85, 32, 48, 32, 76, 88, 67, 74, 48, 77, 82, 85, -/* 0x5220 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x5230 */ 32, 32, 76, 88, 67, 74, 49, 77, 82, 85, 32, 48, 32, 76, 88, 67, -/* 0x5240 */ 74, 49, 77, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x5250 */ 32, 32, 32, 32,100, 32, 32, 76, 88, 67, 65, 76, 74, 77, 80, 32, -/* 0x5260 */ 48, 32, 76, 88, 67, 65, 76, 74, 77, 80, 10, 48, 48, 48, 48, 48, -/* 0x5270 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 67, 65, -/* 0x5280 */ 76, 76, 48, 48, 32, 48, 32, 76, 88, 67, 65, 76, 76, 48, 48, 10, -/* 0x5290 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x52a0 */ 32, 76, 88, 67, 65, 76, 76, 48, 49, 32, 48, 32, 76, 88, 67, 65, -/* 0x52b0 */ 76, 76, 48, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x52c0 */ 32, 32, 32,100, 32, 32, 76, 88, 67, 74, 50, 77, 82, 85, 32, 48, -/* 0x52d0 */ 32, 76, 88, 67, 74, 50, 77, 82, 85, 10, 48, 48, 48, 48, 48, 48, -/* 0x52e0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 67, 74, 52, -/* 0x52f0 */ 77, 82, 85, 32, 48, 32, 76, 88, 67, 74, 52, 77, 82, 85, 10, 48, -/* 0x5300 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x5310 */ 76, 88, 67, 74, 54, 77, 82, 85, 32, 48, 32, 76, 88, 67, 74, 54, -/* 0x5320 */ 77, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x5330 */ 32, 32,100, 32, 32, 76, 88, 67, 74, 55, 77, 82, 85, 32, 48, 32, -/* 0x5340 */ 76, 88, 67, 74, 55, 77, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x5350 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, 77, 82, 85, 48, -/* 0x5360 */ 53, 53, 32, 48, 32, 76, 88, 77, 82, 85, 48, 53, 53, 10, 48, 48, -/* 0x5370 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, -/* 0x5380 */ 82, 85, 66, 89, 84, 69, 50, 32, 48, 32, 77, 82, 85, 66, 89, 84, -/* 0x5390 */ 69, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x53a0 */ 32,100, 32, 32, 77, 82, 85, 66, 73, 84, 83, 50, 32, 48, 32, 77, -/* 0x53b0 */ 82, 85, 66, 73, 84, 83, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x53c0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 77, 82, 85, 65, 82, 66, 50, -/* 0x53d0 */ 48, 32, 48, 32, 77, 82, 85, 65, 82, 66, 50, 48, 10, 48, 48, 48, -/* 0x53e0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 88, -/* 0x53f0 */ 77, 82, 85, 48, 53, 55, 32, 48, 32, 76, 88, 77, 82, 85, 48, 53, -/* 0x5400 */ 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x5410 */ 100, 32, 32, 76, 88, 77, 82, 85, 48, 53, 56, 32, 48, 32, 76, 88, -/* 0x5420 */ 77, 82, 85, 48, 53, 56, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x5430 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 88, 85, 78, 70, 48, 51, 53, -/* 0x5440 */ 32, 48, 32, 76, 88, 85, 78, 70, 48, 51, 53, 10, 48, 48, 48, 48, -/* 0x5450 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 99,116,111, -/* 0x5460 */ 107, 51, 50, 46, 51, 48, 32, 48, 32, 99,116,111,107, 51, 50, 46, -/* 0x5470 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x5480 */ 32,100, 32, 32, 76, 69, 88, 69, 67, 48, 49, 55, 32, 48, 32, 76, -/* 0x5490 */ 69, 88, 69, 67, 48, 49, 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x54a0 */ 32,103, 32, 32, 32, 32, 32, 32, 32, 76, 69, 88, 69, 67, 48, 48, -/* 0x54b0 */ 48, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, -/* 0x54c0 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, -/* 0x54d0 */ 42, 32, 48, 32,108,122,109, 97, 95,115,116, 97, 99,107, 95, 97, -/* 0x54e0 */ 100,106,117,115,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, -/* 0x54f0 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,108, -/* 0x5500 */ 122,109, 97, 95,117, 95,108,101,110, 10, 48, 48, 48, 48, 48, 48, -/* 0x5510 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, -/* 0x5520 */ 32, 48, 32,108,122,109, 97, 95, 99, 95,108,101,110, 10, 48, 48, -/* 0x5530 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, -/* 0x5540 */ 85, 78, 68, 42, 32, 48, 32,108,122,109, 97, 95,112,114,111,112, -/* 0x5550 */ 101,114,116,105,101,115, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x5560 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, -/* 0x5570 */ 102,105,108,116,101,114, 95,108,101,110,103,116,104, 10, 48, 48, -/* 0x5580 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, -/* 0x5590 */ 85, 78, 68, 42, 32, 48, 32,102,105,108,116,101,114, 95, 99,116, -/* 0x55a0 */ 111, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, -/* 0x55b0 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 78, 77, 82, 85, 10, -/* 0x55c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x55d0 */ 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79, -/* 0x55e0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x55f0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 69, 88, 69, 67, 48, -/* 0x5600 */ 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x5610 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5620 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, -/* 0x5630 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, -/* 0x5640 */ 32, 76, 69, 88, 69, 67, 48, 50, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x5650 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x5660 */ 82, 32, 91, 78, 50, 66, 83, 77, 65, 49, 48, 93, 58, 10, 79, 70, -/* 0x5670 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x5680 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x5690 */ 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x56a0 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, -/* 0x56b0 */ 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, -/* 0x56c0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 66, 70, -/* 0x56d0 */ 65, 83, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, -/* 0x56e0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x56f0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, -/* 0x5700 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, -/* 0x5710 */ 32, 32, 32, 78, 50, 66, 68, 69, 67, 49, 48, 10, 10, 82, 69, 76, -/* 0x5720 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, -/* 0x5730 */ 70, 79, 82, 32, 91, 78, 50, 66, 83, 77, 65, 50, 48, 93, 58, 10, -/* 0x5740 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, -/* 0x5750 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, -/* 0x5760 */ 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, -/* 0x5770 */ 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 83, -/* 0x5780 */ 77, 65, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, -/* 0x5790 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, -/* 0x57a0 */ 66, 70, 65, 83, 50, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, -/* 0x57b0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x57c0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, -/* 0x57d0 */ 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, -/* 0x57e0 */ 32, 32, 32, 32, 32, 78, 50, 66, 70, 65, 83, 49, 49, 10, 10, 82, -/* 0x57f0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, -/* 0x5800 */ 83, 32, 70, 79, 82, 32, 91, 78, 50, 66, 83, 77, 65, 51, 48, 93, -/* 0x5810 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, -/* 0x5820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, -/* 0x5830 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, 82, 95, 51, 56, -/* 0x5840 */ 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, -/* 0x5850 */ 66, 68, 69, 67, 50, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x5860 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x5870 */ 78, 50, 66, 70, 65, 83, 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x5880 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5890 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x58a0 */ 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, -/* 0x58b0 */ 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, 50, 48, 10, -/* 0x58c0 */ 48, 48, 48, 48, 48, 48, 48,101, 32, 82, 95, 51, 56, 54, 95, 80, -/* 0x58d0 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 68, 69, -/* 0x58e0 */ 67, 50, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, -/* 0x58f0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 66, -/* 0x5900 */ 68, 69, 67, 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, -/* 0x5910 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5920 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 49, -/* 0x5930 */ 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, -/* 0x5940 */ 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, 54, 48, 10, 48, 48, 48, -/* 0x5950 */ 48, 48, 48, 50,102, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, -/* 0x5960 */ 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, 53, 48, -/* 0x5970 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x5980 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 66, 83, 77, 65, -/* 0x5990 */ 52, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x59a0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x59b0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, 82, -/* 0x59c0 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x59d0 */ 32, 78, 50, 66, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x59e0 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x59f0 */ 82, 32, 91, 78, 50, 66, 70, 65, 83, 52, 48, 93, 58, 10, 79, 70, -/* 0x5a00 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x5a10 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x5a20 */ 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x5a30 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, -/* 0x5a40 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48,101, 32, 82, 95, 51, 56, -/* 0x5a50 */ 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, -/* 0x5a60 */ 66, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x5a70 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x5a80 */ 78, 50, 66, 83, 77, 65, 54, 48, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x5a90 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5aa0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x5ab0 */ 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, -/* 0x5ac0 */ 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, 49, 48, 10, -/* 0x5ad0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x5ae0 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 66, 70, 65, 83, 54, -/* 0x5af0 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x5b00 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x5b10 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 97, 32, 82, 95, -/* 0x5b20 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5b30 */ 78, 50, 66, 70, 65, 83, 54, 49, 10, 48, 48, 48, 48, 48, 48, 49, -/* 0x5b40 */ 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, -/* 0x5b50 */ 32, 32, 32, 32, 78, 50, 66, 68, 69, 67, 49, 48, 10, 10, 82, 69, -/* 0x5b60 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x5b70 */ 32, 70, 79, 82, 32, 91, 78, 50, 66, 70, 65, 83, 54, 49, 93, 58, -/* 0x5b80 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x5b90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x5ba0 */ 69, 10, 48, 48, 48, 48, 48, 48, 49, 50, 32, 82, 95, 51, 56, 54, -/* 0x5bb0 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 66, -/* 0x5bc0 */ 68, 69, 67, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x5bd0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, -/* 0x5be0 */ 50, 68, 83, 77, 65, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x5bf0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5c00 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x5c10 */ 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, -/* 0x5c20 */ 32, 32, 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, 49, 48, 10, 10, -/* 0x5c30 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x5c40 */ 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 68, 70, 65, 83, 49, 48, -/* 0x5c50 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, -/* 0x5c60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, -/* 0x5c70 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, -/* 0x5c80 */ 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, -/* 0x5c90 */ 50, 68, 68, 69, 67, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, -/* 0x5ca0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, -/* 0x5cb0 */ 91, 78, 50, 68, 83, 77, 65, 50, 48, 93, 58, 10, 79, 70, 70, 83, -/* 0x5cc0 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, -/* 0x5cd0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, -/* 0x5ce0 */ 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, -/* 0x5cf0 */ 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, 83, 77, 65, 49, 48, -/* 0x5d00 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x5d10 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 68, 70, 65, 83, -/* 0x5d20 */ 50, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x5d30 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5d40 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, -/* 0x5d50 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5d60 */ 32, 78, 50, 68, 70, 65, 83, 49, 49, 10, 10, 82, 69, 76, 79, 67, -/* 0x5d70 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x5d80 */ 82, 32, 91, 78, 50, 68, 83, 77, 65, 51, 48, 93, 58, 10, 79, 70, -/* 0x5d90 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x5da0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x5db0 */ 48, 48, 48, 48, 48, 48, 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x5dc0 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, -/* 0x5dd0 */ 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, -/* 0x5de0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 68, 70, -/* 0x5df0 */ 65, 83, 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, -/* 0x5e00 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5e10 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 53, -/* 0x5e20 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, -/* 0x5e30 */ 32, 32, 32, 78, 50, 68, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, -/* 0x5e40 */ 48, 48, 48,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, -/* 0x5e50 */ 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, 51, 48, 10, -/* 0x5e60 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x5e70 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 68, 68, 69, 67, 51, -/* 0x5e80 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x5e90 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x5ea0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,102, 32, 82, 95, -/* 0x5eb0 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5ec0 */ 78, 50, 68, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 50, -/* 0x5ed0 */ 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, -/* 0x5ee0 */ 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, 54, 48, 10, 48, 48, 48, -/* 0x5ef0 */ 48, 48, 48, 52, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, -/* 0x5f00 */ 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, 53, 48, -/* 0x5f10 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x5f20 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 68, 83, 77, 65, -/* 0x5f30 */ 52, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x5f40 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5f50 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, 82, -/* 0x5f60 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x5f70 */ 32, 78, 50, 68, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x5f80 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x5f90 */ 82, 32, 91, 78, 50, 68, 70, 65, 83, 52, 48, 93, 58, 10, 79, 70, -/* 0x5fa0 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x5fb0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x5fc0 */ 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x5fd0 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, -/* 0x5fe0 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48,101, 32, 82, 95, 51, 56, -/* 0x5ff0 */ 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, -/* 0x6000 */ 68, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x6010 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x6020 */ 78, 50, 68, 83, 77, 65, 54, 48, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x6030 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6040 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x6050 */ 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, -/* 0x6060 */ 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, 49, 48, 10, -/* 0x6070 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x6080 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 68, 70, 65, 83, 54, -/* 0x6090 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x60a0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x60b0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 97, 32, 82, 95, -/* 0x60c0 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x60d0 */ 78, 50, 68, 70, 65, 83, 54, 49, 10, 48, 48, 48, 48, 48, 48, 49, -/* 0x60e0 */ 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, -/* 0x60f0 */ 32, 32, 32, 32, 78, 50, 68, 68, 69, 67, 49, 48, 10, 10, 82, 69, -/* 0x6100 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x6110 */ 32, 70, 79, 82, 32, 91, 78, 50, 68, 70, 65, 83, 54, 49, 93, 58, -/* 0x6120 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x6130 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x6140 */ 69, 10, 48, 48, 48, 48, 48, 48, 49, 50, 32, 82, 95, 51, 56, 54, -/* 0x6150 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 68, -/* 0x6160 */ 68, 69, 67, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x6170 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, -/* 0x6180 */ 50, 69, 83, 77, 65, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x6190 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x61a0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x61b0 */ 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, -/* 0x61c0 */ 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 49, 48, 10, 10, -/* 0x61d0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x61e0 */ 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, 65, 83, 49, 48, -/* 0x61f0 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, -/* 0x6200 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, -/* 0x6210 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, -/* 0x6220 */ 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, -/* 0x6230 */ 50, 69, 68, 69, 67, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, -/* 0x6240 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, -/* 0x6250 */ 91, 78, 50, 69, 83, 77, 65, 50, 48, 93, 58, 10, 79, 70, 70, 83, -/* 0x6260 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, -/* 0x6270 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, -/* 0x6280 */ 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, -/* 0x6290 */ 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 83, 77, 65, 49, 48, -/* 0x62a0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x62b0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, 65, 83, -/* 0x62c0 */ 50, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x62d0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x62e0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, -/* 0x62f0 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6300 */ 32, 78, 50, 69, 70, 65, 83, 49, 49, 10, 10, 82, 69, 76, 79, 67, -/* 0x6310 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x6320 */ 82, 32, 91, 78, 50, 69, 83, 77, 65, 51, 48, 93, 58, 10, 79, 70, -/* 0x6330 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x6340 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x6350 */ 48, 48, 48, 48, 48, 48, 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x6360 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, -/* 0x6370 */ 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, -/* 0x6380 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, -/* 0x6390 */ 65, 83, 51, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, -/* 0x63a0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x63b0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 53, -/* 0x63c0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, -/* 0x63d0 */ 32, 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, -/* 0x63e0 */ 48, 48, 48,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, -/* 0x63f0 */ 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, -/* 0x6400 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x6410 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 68, 69, 67, 51, -/* 0x6420 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x6430 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x6440 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,102, 32, 82, 95, -/* 0x6450 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6460 */ 78, 50, 69, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 49, -/* 0x6470 */ 101, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, -/* 0x6480 */ 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 53, 48, 10, 48, 48, 48, -/* 0x6490 */ 48, 48, 48, 51, 48, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, -/* 0x64a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 54, 48, -/* 0x64b0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x64c0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 83, 77, 65, -/* 0x64d0 */ 52, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x64e0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x64f0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, 82, -/* 0x6500 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6510 */ 32, 78, 50, 69, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x6520 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x6530 */ 82, 32, 91, 78, 50, 69, 70, 65, 83, 52, 48, 93, 58, 10, 79, 70, -/* 0x6540 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x6550 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x6560 */ 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x6570 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, -/* 0x6580 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48,101, 32, 82, 95, 51, 56, -/* 0x6590 */ 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, -/* 0x65a0 */ 69, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x65b0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x65c0 */ 78, 50, 69, 83, 77, 65, 54, 48, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x65d0 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x65e0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x65f0 */ 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, -/* 0x6600 */ 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 49, 48, 10, -/* 0x6610 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x6620 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, 65, 83, 54, -/* 0x6630 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x6640 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x6650 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 97, 32, 82, 95, -/* 0x6660 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6670 */ 78, 50, 69, 70, 65, 83, 54, 49, 10, 48, 48, 48, 48, 48, 48, 49, -/* 0x6680 */ 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, -/* 0x6690 */ 32, 32, 32, 32, 78, 50, 69, 68, 69, 67, 49, 48, 10, 10, 82, 69, -/* 0x66a0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x66b0 */ 32, 70, 79, 82, 32, 91, 78, 50, 69, 70, 65, 83, 54, 49, 93, 58, -/* 0x66c0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x66d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x66e0 */ 69, 10, 48, 48, 48, 48, 48, 48, 49, 50, 32, 82, 95, 51, 56, 54, -/* 0x66f0 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 78, 50, 69, -/* 0x6700 */ 68, 69, 67, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x6710 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, -/* 0x6720 */ 90, 77, 65, 95, 68, 69, 67, 48, 48, 93, 58, 10, 79, 70, 70, 83, -/* 0x6730 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, -/* 0x6740 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, -/* 0x6750 */ 48, 48, 48, 48, 53, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, -/* 0x6760 */ 32, 32, 32, 32, 32, 32, 32, 32,108,122,109, 97, 95,115,116, 97, -/* 0x6770 */ 99,107, 95, 97,100,106,117,115,116, 10, 48, 48, 48, 48, 48, 48, -/* 0x6780 */ 49, 52, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, -/* 0x6790 */ 32, 32, 32, 32, 32,108,122,109, 97, 95,117, 95,108,101,110, 10, -/* 0x67a0 */ 48, 48, 48, 48, 48, 48, 49,101, 32, 82, 95, 51, 56, 54, 95, 51, -/* 0x67b0 */ 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,122,109, 97, 95, -/* 0x67c0 */ 99, 95,108,101,110, 10, 48, 48, 48, 48, 48, 48, 50, 97, 32, 82, -/* 0x67d0 */ 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x67e0 */ 32,108,122,109, 97, 95,112,114,111,112,101,114,116,105,101,115, -/* 0x67f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x6800 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, -/* 0x6810 */ 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x6820 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6830 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, -/* 0x6840 */ 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6850 */ 32,102,105,108,116,101,114, 95,108,101,110,103,116,104, 10, 10, -/* 0x6860 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x6870 */ 68, 83, 32, 70, 79, 82, 32, 91, 67, 84, 67, 76, 69, 86, 69, 49, -/* 0x6880 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, -/* 0x6890 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, -/* 0x68a0 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, -/* 0x68b0 */ 56, 54, 95, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102, -/* 0x68c0 */ 105,108,116,101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, -/* 0x68d0 */ 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, -/* 0x68e0 */ 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 48, 48, 10, 10, 82, -/* 0x68f0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, -/* 0x6900 */ 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 48, 50, 93, -/* 0x6910 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, -/* 0x6920 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, -/* 0x6930 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,100, 32, 82, 95, 51, 56, -/* 0x6940 */ 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, -/* 0x6950 */ 76, 76, 84, 82, 48, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x6960 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x6970 */ 67, 65, 76, 76, 84, 82, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x6980 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6990 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x69a0 */ 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, -/* 0x69b0 */ 32, 32, 32, 32, 32, 32, 32,102,105,108,116,101,114, 95,108,101, -/* 0x69c0 */ 110,103,116,104, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, -/* 0x69d0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, -/* 0x69e0 */ 76, 76, 84, 82, 49, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, -/* 0x69f0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6a00 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, -/* 0x6a10 */ 48, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, -/* 0x6a20 */ 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, 51, 10, 10, 82, -/* 0x6a30 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, -/* 0x6a40 */ 83, 32, 70, 79, 82, 32, 91, 67, 84, 67, 76, 69, 86, 69, 50, 93, -/* 0x6a50 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, -/* 0x6a60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, -/* 0x6a70 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, -/* 0x6a80 */ 54, 95, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,105, -/* 0x6a90 */ 108,116,101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x6aa0 */ 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, -/* 0x6ab0 */ 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, 49, 10, 10, 82, 69, -/* 0x6ac0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x6ad0 */ 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 49, 51, 93, 58, -/* 0x6ae0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x6af0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x6b00 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, -/* 0x6b10 */ 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, -/* 0x6b20 */ 76, 84, 82, 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x6b30 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, -/* 0x6b40 */ 88, 85, 78, 70, 48, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x6b50 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6b60 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x6b70 */ 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, -/* 0x6b80 */ 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 49, 48, 10, 10, -/* 0x6b90 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x6ba0 */ 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 77, 82, 85, 48, 48, 53, -/* 0x6bb0 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, -/* 0x6bc0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, -/* 0x6bd0 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, -/* 0x6be0 */ 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, -/* 0x6bf0 */ 77, 82, 85, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, -/* 0x6c00 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 85, -/* 0x6c10 */ 78, 70, 48, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, -/* 0x6c20 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6c30 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x6c40 */ 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, -/* 0x6c50 */ 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 52, 50, 10, 10, 82, 69, -/* 0x6c60 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x6c70 */ 32, 70, 79, 82, 32, 91, 76, 88, 74, 67, 67, 48, 50, 48, 93, 58, -/* 0x6c80 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x6c90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x6ca0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, -/* 0x6cb0 */ 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 85, -/* 0x6cc0 */ 78, 70, 48, 51, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x6cd0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, -/* 0x6ce0 */ 88, 74, 67, 67, 48, 50, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x6cf0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6d00 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x6d10 */ 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, -/* 0x6d20 */ 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 51, 52, 10, 10, -/* 0x6d30 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x6d40 */ 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 85, 78, 70, 51, 56, 56, -/* 0x6d50 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, -/* 0x6d60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, -/* 0x6d70 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, -/* 0x6d80 */ 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, -/* 0x6d90 */ 88, 85, 78, 70, 48, 52, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, -/* 0x6da0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, -/* 0x6db0 */ 91, 76, 88, 85, 78, 70, 52, 56, 55, 93, 58, 10, 79, 70, 70, 83, -/* 0x6dc0 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, -/* 0x6dd0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, -/* 0x6de0 */ 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, -/* 0x6df0 */ 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 52, 48, -/* 0x6e00 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x6e10 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 77, 82, 85, 48, -/* 0x6e20 */ 54, 53, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x6e30 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6e40 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, -/* 0x6e50 */ 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6e60 */ 32, 76, 88, 77, 82, 85, 48, 55, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x6e70 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x6e80 */ 82, 32, 91, 76, 88, 77, 82, 85, 48, 55, 48, 93, 58, 10, 79, 70, -/* 0x6e90 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x6ea0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x6eb0 */ 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, -/* 0x6ec0 */ 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, -/* 0x6ed0 */ 52, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, -/* 0x6ee0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 77, 82, -/* 0x6ef0 */ 85, 48, 57, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, -/* 0x6f00 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6f10 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 54, -/* 0x6f20 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, -/* 0x6f30 */ 32, 32, 32, 76, 88, 77, 82, 85, 49, 48, 48, 10, 10, 82, 69, 76, -/* 0x6f40 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, -/* 0x6f50 */ 70, 79, 82, 32, 91, 76, 88, 85, 78, 70, 48, 52, 49, 93, 58, 10, -/* 0x6f60 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, -/* 0x6f70 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, -/* 0x6f80 */ 10, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95, 51, 56, 54, 95, -/* 0x6f90 */ 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, -/* 0x6fa0 */ 70, 48, 51, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, -/* 0x6fb0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 69, -/* 0x6fc0 */ 88, 69, 67, 48, 49, 54, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, -/* 0x6fd0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x6fe0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, -/* 0x6ff0 */ 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, -/* 0x7000 */ 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 52, 50, 10, 10, 82, -/* 0x7010 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, -/* 0x7020 */ 83, 32, 70, 79, 82, 32, 91, 76, 88, 77, 82, 85, 48, 52, 48, 93, -/* 0x7030 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, -/* 0x7040 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, -/* 0x7050 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, -/* 0x7060 */ 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, -/* 0x7070 */ 77, 82, 85, 48, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x7080 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x7090 */ 76, 88, 74, 67, 67, 48, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x70a0 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x70b0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x70c0 */ 48, 48, 48, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, -/* 0x70d0 */ 32, 32, 32, 32, 32, 32, 32, 76, 88, 74, 67, 67, 48, 49, 48, 10, -/* 0x70e0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x70f0 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 67, 65, 76, 76, 48, -/* 0x7100 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x7110 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x7120 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, -/* 0x7130 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x7140 */ 76, 88, 85, 78, 70, 48, 51, 55, 10, 10, 82, 69, 76, 79, 67, 65, -/* 0x7150 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, -/* 0x7160 */ 32, 91, 76, 88, 67, 74, 50, 77, 82, 85, 93, 58, 10, 79, 70, 70, -/* 0x7170 */ 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, -/* 0x7180 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, -/* 0x7190 */ 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, -/* 0x71a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 51, -/* 0x71b0 */ 55, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, -/* 0x71c0 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 67, 74, 52, -/* 0x71d0 */ 77, 82, 85, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, -/* 0x71e0 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x71f0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, -/* 0x7200 */ 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, -/* 0x7210 */ 32, 32, 76, 88, 85, 78, 70, 48, 51, 52, 10, 10, 82, 69, 76, 79, -/* 0x7220 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, -/* 0x7230 */ 79, 82, 32, 91, 76, 88, 67, 74, 54, 77, 82, 85, 93, 58, 10, 79, -/* 0x7240 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, -/* 0x7250 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, -/* 0x7260 */ 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, -/* 0x7270 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 67, 74, 56, -/* 0x7280 */ 77, 82, 85, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, -/* 0x7290 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 88, 67, -/* 0x72a0 */ 74, 55, 77, 82, 85, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, -/* 0x72b0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x72c0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x72d0 */ 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, -/* 0x72e0 */ 32, 32, 32, 32, 76, 88, 67, 74, 56, 77, 82, 85, 10, 10, 82, 69, -/* 0x72f0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x7300 */ 32, 70, 79, 82, 32, 91, 76, 88, 67, 74, 56, 77, 82, 85, 93, 58, -/* 0x7310 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x7320 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x7330 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, -/* 0x7340 */ 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 88, 85, -/* 0x7350 */ 78, 70, 48, 51, 55, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x7360 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, -/* 0x7370 */ 88, 85, 78, 70, 48, 51, 52, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x7380 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x7390 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x73a0 */ 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, -/* 0x73b0 */ 32, 32, 32, 32, 32, 32, 76, 88, 85, 78, 70, 48, 51, 48, 10, 10, -/* 0x73c0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x73d0 */ 68, 83, 32, 70, 79, 82, 32, 91, 99,116,111,107, 51, 50, 46, 48, -/* 0x73e0 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, -/* 0x73f0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x7400 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, -/* 0x7410 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x7420 */ 99,116,111,107, 51, 50, 46, 50, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x7430 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x7440 */ 82, 32, 91, 99,116,111,107, 51, 50, 46, 49, 48, 93, 58, 10, 79, -/* 0x7450 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, -/* 0x7460 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, -/* 0x7470 */ 48, 48, 48, 48, 48, 48, 48,100, 32, 82, 95, 51, 56, 54, 95, 80, -/* 0x7480 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, -/* 0x7490 */ 50, 46, 50, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, -/* 0x74a0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 99,116, -/* 0x74b0 */ 111,107, 51, 50, 46, 50, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x74c0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x74d0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x74e0 */ 48, 48, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, -/* 0x74f0 */ 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 52, 48, 10, -/* 0x7500 */ 48, 48, 48, 48, 48, 48, 48, 97, 32, 82, 95, 51, 56, 54, 95, 80, -/* 0x7510 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, -/* 0x7520 */ 50, 46, 52, 48, 10, 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, -/* 0x7530 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x7540 */ 99,116,111,107, 51, 50, 46, 52, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x7550 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x7560 */ 82, 32, 91, 99,116,111,107, 51, 50, 46, 51, 48, 93, 58, 10, 79, -/* 0x7570 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, -/* 0x7580 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, -/* 0x7590 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, -/* 0x75a0 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, -/* 0x75b0 */ 50, 46, 52, 48, 10, 48, 48, 48, 48, 48, 48, 48, 57, 32, 82, 95, -/* 0x75c0 */ 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x75d0 */ 99,116,111,107, 51, 50, 46, 49, 48, 10, 10, 82, 69, 76, 79, 67, -/* 0x75e0 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x75f0 */ 82, 32, 91, 99,116,111,107, 51, 50, 46, 52, 48, 93, 58, 10, 79, -/* 0x7600 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, -/* 0x7610 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, -/* 0x7620 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 80, -/* 0x7630 */ 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, -/* 0x7640 */ 50, 46, 48, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, -/* 0x7650 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 69, -/* 0x7660 */ 88, 69, 67, 48, 50, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, -/* 0x7670 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x7680 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, -/* 0x7690 */ 55, 48, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, -/* 0x76a0 */ 32, 32, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10 +/* 0x0020 */ 208, 5, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, +/* 0x0030 */ 8, 0, 5, 0,232,252,255,255,255, 1,219,116, 2,243,195,139, +/* 0x0040 */ 30,131,238,252, 17,219,195, 94,131,236, 28,141,124, 36, 32,232, +/* 0x0050 */ 176, 1, 0, 0,232,171, 1, 0, 0,139, 7,139, 79, 4,131,199, +/* 0x0060 */ 8,131,248, 6,116, 9,185, 0, 16, 0, 0,133,192,117,234,247, +/* 0x0070 */ 217,137,229,137, 77, 24,141,186,247,255,255,255,139, 15, 41,207, +/* 0x0080 */ 137,125, 8,173, 1,199,137,125, 0, 41,193,137, 77, 4,139, 30, +/* 0x0090 */ 141,187, 45, 1, 0, 0,137,125, 16, 41,252,131,228,248,141, 67, +/* 0x00a0 */ 20, 1,224,131,224,248, 80,137,193, 41,225,137, 76, 36, 4,139, +/* 0x00b0 */ 77, 24,137, 12, 36,185, 34, 0, 0, 0,137, 76, 36, 8, 49,201, +/* 0x00c0 */ 82, 80,137, 8, 87, 81,232,252,255,255,255,131,196, 12, 90,137, +/* 0x00d0 */ 193,193,232, 12,193,224, 12,137, 69, 12, 41,193,131,233, 1,137, +/* 0x00e0 */ 77, 20,141,124, 36, 12, 85,139, 78, 4,141,118, 12, 1,241, 81, +/* 0x00f0 */ 49,219, 49,201,131,205,255,252,168,164,255,210,114,251,141, 65, +/* 0x0100 */ 1,255,210, 17,192,255,210,115,248,131,232, 3,114, 11,193,224, +/* 0x0110 */ 8,172,131,240,255,116, 45,137,197,141, 65, 1,255,210, 17,201, +/* 0x0120 */ 255,210, 17,201,117, 13,137,193,131,192, 2,255,210, 17,201,255, +/* 0x0130 */ 210,115,248,129,253, 0,243,255,255, 17,193, 86,141, 52, 47,243, +/* 0x0140 */ 164, 94,235,182, 89, 57,206,116, 1,244, 93,139,125, 20,139, 85, +/* 0x0150 */ 16,137,225,137,251,176, 4,232, 40, 0, 0, 0,137,236,106, 0, +/* 0x0160 */ 87,106, 18,106, 5,255,117, 16,255,117, 12,232,252,255,255,255, +/* 0x0170 */ 131,196, 24,137,251,176, 6,232, 8, 0, 0, 0,139, 69, 12,131, +/* 0x0180 */ 192, 12,255,224, 15,182,192, 80,205,128, 89, 61, 0,240,255,255, +/* 0x0190 */ 114, 1,244,195, 83,141, 92, 36, 8,176, 90,232,228,255,255,255, +/* 0x01a0 */ 91,195, 41,192,195,135, 92, 36, 4,139, 76, 36, 8,106,106, 88, +/* 0x01b0 */ 205,128,139, 92, 36, 4,195, 85,137,229, 83,139, 93, 8,106,109, +/* 0x01c0 */ 88,205,128, 91, 93,195, 85,137,229, 83,139, 93, 8,139, 77, 12, +/* 0x01d0 */ 255, 53, 39, 0, 0, 0, 88,205,128, 91, 93,195, 85,137,229, 87, +/* 0x01e0 */ 139, 77, 16,139, 69, 12,139,125, 8,243,170, 95, 93,195, 85,137, +/* 0x01f0 */ 229, 87, 86,139, 77, 16,139,117, 12,139,125, 8,243,164,137,248, +/* 0x0200 */ 94, 95, 93,195,139, 7,131,199, 4,133,192,117,247,195,204,195, +/* 0x0210 */ 85,137,229, 86, 83,131,236, 64,139,117, 8,106, 64,104,255, 0, +/* 0x0220 */ 0, 0,141, 93,184, 83,232,252,255,255,255, 83, 86,232,252,255, +/* 0x0230 */ 255,255,137,194,131,196, 20,133,192,120, 21, 15,183, 69,192, 37, +/* 0x0240 */ 0,240, 0, 0,185, 0, 0, 0, 0, 61, 0, 64, 0, 0,116, 23, +/* 0x0250 */ 131,250,254,117, 16,104,192, 1, 0, 0, 86,232,252,255,255,255, +/* 0x0260 */ 137,194,131,196, 8,137,209,137,200,141,101,248, 91, 94,201,195, +/* 0x0270 */ 139, 68, 36, 4,137,194,131,226, 31,131,224, 63,131,250, 26,118, +/* 0x0280 */ 12,168, 32,116, 5,131,232, 70,235, 3,131,232, 43,131,192, 64, +/* 0x0290 */ 195, 85,137,229, 87, 86, 83,131,236, 20,232, 12, 0, 0, 0, 47, +/* 0x02a0 */ 100, 97,116, 97, 47,100, 97,116, 97, 47, 0, 90,139, 2,139, 77, +/* 0x02b0 */ 8,137, 1,139, 66, 4,137, 65, 4,102,139, 66, 8,102,137, 65, +/* 0x02c0 */ 8,138, 66, 10,136, 65, 10,198, 65, 11, 0, 81,232, 63,255,255, +/* 0x02d0 */ 255,131,196, 4,232, 19, 0, 0, 0, 47,112,114,111, 99, 47,115, +/* 0x02e0 */ 101,108,102, 47, 99,109,100,108,105,110,101, 0, 94,185, 0, 0, +/* 0x02f0 */ 0, 0,137,243,137,202,106, 5, 88,205,128,137, 69,232,139,117, +/* 0x0300 */ 12,186,255, 15, 0, 0,137,195,137,241,106, 3, 88,205,128,137, +/* 0x0310 */ 199,139, 93,232,106, 6, 88,205,128,137,248,133,255, 15,136,178, +/* 0x0320 */ 0, 0, 0,198, 4, 62, 0,128, 62, 0,116, 6, 70,128, 62, 0, +/* 0x0330 */ 117,250,137,240,128, 62, 47,116, 6, 78,128, 62, 47,117,250, 41, +/* 0x0340 */ 240, 80, 86,139, 69, 8,131,192, 10, 80,232,252,255,255,255,137, +/* 0x0350 */ 195,198, 0, 0,255,117, 8,232,180,254,255,255,131,196, 16,232, +/* 0x0360 */ 7, 0, 0, 0, 47, 99, 97, 99,104,101, 0, 90,139, 2,137, 3, +/* 0x0370 */ 102,139, 66, 4,102,137, 67, 4,131,195, 6,198, 3, 0,255,117, +/* 0x0380 */ 8,232,138,254,255,255,232, 5, 0, 0, 0, 47,117,112,120, 0, +/* 0x0390 */ 88,139, 0,137, 3,141,115, 4,106, 20, 88,205,128,137,195,137, +/* 0x03a0 */ 4, 36,232,201,254,255,255,136, 6,137,216,193,232, 6,137, 4, +/* 0x03b0 */ 36,232,186,254,255,255,136, 70, 1,137,216,193,232, 12,137, 4, +/* 0x03c0 */ 36,232,170,254,255,255,131,196, 4,136, 70, 2,198, 70, 3, 0, +/* 0x03d0 */ 184, 0, 0, 0, 0,141,101,244, 91, 94, 95,201,195, 86, 83,139, +/* 0x03e0 */ 116, 36, 12,139, 92, 36, 16,139, 76, 36, 20, 73,131,249,255,116, +/* 0x03f0 */ 30,138, 22,131,202, 32, 15,190,210,138, 3,131,200, 32, 15,190, +/* 0x0400 */ 192, 67, 70, 41,194,137,208,117, 11, 73,131,249,255,117,226,184, +/* 0x0410 */ 0, 0, 0, 0, 91, 94,195, 85,137,229, 87, 86, 83,129,236, 44, +/* 0x0420 */ 16, 0, 0,232, 4, 0, 0, 0,117,112,120, 0, 91,185, 16, 0, +/* 0x0430 */ 0, 0,186,100, 1, 0, 0,137,208,205,128,137,198,141, 68, 36, +/* 0x0440 */ 15,131,224,240,137, 69,240,199, 0, 0, 0, 0, 0, 80,232,252, +/* 0x0450 */ 255,255,255,232, 5, 0, 0, 0, 97,110,100,114, 0, 88,199, 4, +/* 0x0460 */ 36, 4, 0, 0, 0,255,117,240, 80,232,111,255,255,255,137,199, +/* 0x0470 */ 131,196, 12,133,192,117, 99,131,125, 16, 0,117, 8,232,252,255, +/* 0x0480 */ 255,255,137, 69, 16,133,255,117, 81,131,254,218,117, 76,131,125, +/* 0x0490 */ 16, 0,116, 70,139, 85, 16,128, 58, 0,117, 22,255,117,240, 82, +/* 0x04a0 */ 232,236,253,255,255,131,196, 8,137,193,133,192, 15,136,211, 0, +/* 0x04b0 */ 0, 0,185,194, 0, 0, 0,190,192, 1, 0, 0,139, 93, 16,137, +/* 0x04c0 */ 242,106, 5, 88,205,128,137,198,137,193,133,192, 15,136,179, 0, +/* 0x04d0 */ 0, 0,139, 93, 16,106, 10, 88,205,128,131,125, 12, 0,116,106, +/* 0x04e0 */ 133,255,116, 22,137,243,139, 77, 12,106, 93, 88,205,128,137,193, +/* 0x04f0 */ 133,192, 15,136,141, 0, 0, 0,235, 80,104, 0, 16, 0, 0,106, +/* 0x0500 */ 0,255,117,240,232,252,255,255,255,139,125, 12,131,196, 12,133, +/* 0x0510 */ 255,116, 41,137,125,216,129,255, 0, 16, 0, 0,118, 7,199, 69, +/* 0x0520 */ 216, 0, 16, 0, 0,137,243,139, 77,240,139, 85,216,106, 4, 88, +/* 0x0530 */ 205,128, 59, 69,216,117, 64, 43,125,216,117,215,185, 0, 0, 0, +/* 0x0540 */ 0,137,243,137,202,106, 19, 88,205,128,106, 0, 86,131,125, 8, +/* 0x0550 */ 1, 25,192,131,224,240,131,192, 17, 80,106, 3,255,117, 12,255, +/* 0x0560 */ 117, 8,232,252,255,255,255,137,194,131,196, 24,137,193, 61, 0, +/* 0x0570 */ 240,255,255,119, 16,235, 7,185,228,255,255,255,235, 7,141, 70, +/* 0x0580 */ 1,137,193, 9,209,137,200,141,101,244, 91, 94, 95,201,195, 90, +/* 0x0590 */ 232, 15, 0, 0, 0, 0, 0, 0, 0, 0, 46,115,121,109,116, 97, +/* 0x05a0 */ 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114, +/* 0x05b0 */ 116, 97, 98, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, +/* 0x05c0 */ 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, +/* 0x05d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x05e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x05f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, +/* 0x0600 */ 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 91, 5, 0, 0, +/* 0x0610 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, +/* 0x0620 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0630 */ 76, 8, 0, 0, 88, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, +/* 0x0640 */ 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, +/* 0x0650 */ 0, 0, 0, 0, 0, 0, 0, 0,143, 5, 0, 0, 10, 0, 0, 0, +/* 0x0660 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x0670 */ 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0680 */ 164, 8, 0, 0, 16, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, +/* 0x0690 */ 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, +/* 0x06a0 */ 0, 0, 0, 0, 0, 0, 0, 0,153, 5, 0, 0, 53, 0, 0, 0, +/* 0x06b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x06c0 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x06d0 */ 16, 7, 0, 0,224, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, +/* 0x06e0 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, +/* 0x06f0 */ 0, 0, 0, 0, 0, 0, 0, 0,240, 7, 0, 0, 92, 0, 0, 0, +/* 0x0700 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x0710 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0720 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, +/* 0x0730 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, +/* 0x0740 */ 1, 0, 0, 0,227, 3, 0, 0,120, 1, 0, 0, 18, 0, 1, 0, +/* 0x0750 */ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x0760 */ 25, 0, 0, 0,186, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x0770 */ 33, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x0780 */ 38, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x0790 */ 44, 0, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x07a0 */ 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x07b0 */ 66, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x07c0 */ 73, 0, 0, 0,218, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x07d0 */ 81, 0, 0, 0,113, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x07e0 */ 86, 0, 0, 0,146, 1, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, +/* 0x07f0 */ 0,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, +/* 0x0800 */ 0, 79, 95, 66, 73, 78, 70, 79, 0,109,101,109,112, 99,112,121, +/* 0x0810 */ 0,109,109, 97,112, 0,117,110, 97,109,101, 0,103,101,116, 95, +/* 0x0820 */ 117,112,120,102,110, 95,112, 97,116,104, 0, 95,115,116, 97,114, +/* 0x0830 */ 116, 0,109,101,109,115,101,116, 0,109,121, 95, 98,107,112,116, +/* 0x0840 */ 0,115,116, 97,116, 0,109,107,100,105,114, 0, 1, 0, 0, 0, +/* 0x0850 */ 2, 2, 0, 0,147, 0, 0, 0, 2, 3, 0, 0, 56, 1, 0, 0, +/* 0x0860 */ 2, 6, 0, 0,243, 1, 0, 0, 2, 10, 0, 0,250, 1, 0, 0, +/* 0x0870 */ 2, 12, 0, 0, 40, 2, 0, 0, 2, 13, 0, 0, 23, 3, 0, 0, +/* 0x0880 */ 2, 5, 0, 0, 27, 4, 0, 0, 2, 7, 0, 0, 74, 4, 0, 0, +/* 0x0890 */ 2, 8, 0, 0,209, 4, 0, 0, 2, 10, 0, 0, 47, 5, 0, 0, +/* 0x08a0 */ 2, 6, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0, 6, 0, 0, 0, +/* 0x08b0 */ 1, 4, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32, +/* 0x08c0 */ 101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116, +/* 0x08d0 */ 105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, +/* 0x08e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, +/* 0x08f0 */ 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, +/* 0x0900 */ 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, +/* 0x0910 */ 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, +/* 0x0920 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 53, +/* 0x0930 */ 53, 98, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, +/* 0x0940 */ 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, +/* 0x0950 */ 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, +/* 0x0960 */ 48, 97, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 56,102, 32, 32, +/* 0x0970 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, +/* 0x0980 */ 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, +/* 0x0990 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, +/* 0x09a0 */ 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, +/* 0x09b0 */ 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, +/* 0x09c0 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, +/* 0x09d0 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 51,101, 51, 32, +/* 0x09e0 */ 103, 32, 32, 32, 32, 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88, +/* 0x09f0 */ 32, 48, 49, 55, 56, 32,117,112,120, 95,109,109, 97,112, 95, 97, +/* 0x0a00 */ 110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x0a10 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, +/* 0x0a20 */ 95, 66, 73, 78, 70, 79, 10, 48, 48, 48, 48, 48, 49, 98, 97, 32, +/* 0x0a30 */ 103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, +/* 0x0a40 */ 32, 48, 32,109,101,109,112, 99,112,121, 10, 48, 48, 48, 48, 48, +/* 0x0a50 */ 49, 54, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, +/* 0x0a60 */ 65, 73, 78, 88, 32, 48, 32,109,109, 97,112, 10, 48, 48, 48, 48, +/* 0x0a70 */ 48, 49, 56, 51, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, +/* 0x0a80 */ 77, 65, 73, 78, 88, 32, 48, 32,117,110, 97,109,101, 10, 48, 48, +/* 0x0a90 */ 48, 48, 48, 49, 54,101, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, +/* 0x0aa0 */ 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,103,101,116, 95,117,112, +/* 0x0ab0 */ 120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 48, 48, +/* 0x0ac0 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, +/* 0x0ad0 */ 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, +/* 0x0ae0 */ 48, 49, 97, 56, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, +/* 0x0af0 */ 77, 65, 73, 78, 88, 32, 48, 32,109,101,109,115,101,116, 10, 48, +/* 0x0b00 */ 48, 48, 48, 48, 49,100, 97, 32,103, 32, 32, 32, 32, 32, 32, 32, +/* 0x0b10 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,109,121, 95, 98,107, +/* 0x0b20 */ 112,116, 10, 48, 48, 48, 48, 48, 49, 55, 49, 32,103, 32, 32, 32, +/* 0x0b30 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32,115, +/* 0x0b40 */ 116, 97,116, 10, 48, 48, 48, 48, 48, 49, 57, 50, 32,103, 32, 32, +/* 0x0b50 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, +/* 0x0b60 */ 109,107,100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, +/* 0x0b70 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, +/* 0x0b80 */ 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, +/* 0x0b90 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x0ba0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, +/* 0x0bb0 */ 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, +/* 0x0bc0 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, +/* 0x0bd0 */ 48, 48, 48, 48, 48, 57, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, +/* 0x0be0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, +/* 0x0bf0 */ 97,112, 95, 97,110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 49, +/* 0x0c00 */ 51, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, +/* 0x0c10 */ 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 49, +/* 0x0c20 */ 102, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, +/* 0x0c30 */ 32, 32, 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, +/* 0x0c40 */ 48, 49,102, 97, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, +/* 0x0c50 */ 32, 32, 32, 32, 32, 32, 32,115,116, 97,116, 10, 48, 48, 48, 48, +/* 0x0c60 */ 48, 50, 50, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, +/* 0x0c70 */ 32, 32, 32, 32, 32, 32, 32,109,107,100,105,114, 10, 48, 48, 48, +/* 0x0c80 */ 48, 48, 51, 49, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, +/* 0x0c90 */ 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99,112,121, 10, +/* 0x0ca0 */ 48, 48, 48, 48, 48, 52, 49, 98, 32, 82, 95, 51, 56, 54, 95, 80, +/* 0x0cb0 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,110, 97,109,101, +/* 0x0cc0 */ 10, 48, 48, 48, 48, 48, 52, 52, 97, 32, 82, 95, 51, 56, 54, 95, +/* 0x0cd0 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95, +/* 0x0ce0 */ 117,112,120,102,110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, +/* 0x0cf0 */ 52,100, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, +/* 0x0d00 */ 32, 32, 32, 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, +/* 0x0d10 */ 48, 48, 53, 50,102, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, +/* 0x0d20 */ 32, 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, 10, 82, 69, +/* 0x0d30 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, +/* 0x0d40 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, +/* 0x0d50 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, +/* 0x0d60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, +/* 0x0d70 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, +/* 0x0d80 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, +/* 0x0d90 */ 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, +/* 0x0da0 */ 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x0db0 */ 32, 79, 95, 66, 73, 78, 70, 79, 10 }; diff --git a/src/stub/i386-linux.elf-fold.h b/src/stub/i386-linux.elf-fold.h index f7e74acd..fb5d06dd 100644 --- a/src/stub/i386-linux.elf-fold.h +++ b/src/stub/i386-linux.elf-fold.h @@ -1,5 +1,5 @@ /* i386-linux.elf-fold.h - created from i386-linux.elf-fold.bin, 2102 (0x836) bytes + created from i386-linux.elf-fold.bin, 15504 (0x3c90) bytes This file is part of the UPX executable compressor. @@ -32,141 +32,978 @@ /* clang-format off */ -#define STUB_I386_LINUX_ELF_FOLD_SIZE 2102 -#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x8184898a -#define STUB_I386_LINUX_ELF_FOLD_CRC32 0x038bdf96 +#define STUB_I386_LINUX_ELF_FOLD_SIZE 15504 +#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x804e80e3 +#define STUB_I386_LINUX_ELF_FOLD_CRC32 0xa76c1b69 -unsigned char stub_i386_linux_elf_fold[2102] = { +unsigned char stub_i386_linux_elf_fold[15504] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0, -/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, -/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, -/* 0x0040 */ 0, 16,192, 0, 54, 8, 0, 0, 56, 8, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 54, 8, 0, 0, 0, 0, 0, 0, -/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0080 */ 87, 81, 80,139, 94,252,137,230,246,195, 2,117, 6,129,236, 0, -/* 0x0090 */ 16, 0, 0,137,231,106, 8, 89,243,165, 85,137,229,173,133,192, -/* 0x00a0 */ 171,117,250, 87,246,195, 2,117, 1,171,173,133,192,171,117,250, -/* 0x00b0 */ 87,173,133,192,171,165,117,249,246,195, 2,116, 7, 95, 89,233, -/* 0x00c0 */ 152, 0, 0, 0, 64,131,239, 8,106, 10, 89,243,171, 72,171,171, -/* 0x00d0 */ 41,125,248, 87, 86,232, 15, 0, 0, 0, 47,112,114,111, 99, 47, -/* 0x00e0 */ 115,101,108,102, 47,101,120,101, 0, 91, 83,185, 0, 0, 0, 0, -/* 0x00f0 */ 106, 5, 88,205,128,137, 69, 24, 91,186,215, 15, 0, 0,137,249, -/* 0x0100 */ 106, 85, 88,205,128,133,192,121, 7,137,217,184, 14, 0, 0, 0, -/* 0x0110 */ 141,116, 1,255,145,253, 95, 79,176, 0,170,243,164,184, 32, 32, -/* 0x0120 */ 32, 61,131,239, 3,137, 7,139, 69,252,137, 56,131,231,252, 94, -/* 0x0130 */ 137,241, 41,225,137,200, 49,248,131,224, 4, 41,199, 90, 1,250, -/* 0x0140 */ 175,173,193,233, 2, 73,243,165,252,141, 79, 4, 49,192, 41,225, -/* 0x0150 */ 137,231,193,233, 2,243,171,137,252,137,215, 88, 93, 88, 94, 89, -/* 0x0160 */ 129,236, 0, 10, 0, 0,137,226, 81,139, 24,139, 72, 4,131,193, -/* 0x0170 */ 12, 96, 71,232,180, 5, 0, 0, 79,137,198,139,108, 36, 32,139, -/* 0x0180 */ 77,104,137,235,102,131,125, 16, 2,117, 5,106, 45, 88,205,128, -/* 0x0190 */ 106, 91, 88,205,128,137,250,137,231,185,137, 2, 0, 0, 49,192, -/* 0x01a0 */ 243,171,137,252, 88, 89, 95, 91, 86, 81, 80, 82, 87, 91,133,255, -/* 0x01b0 */ 120, 30, 83, 41,237,106, 2, 94,106, 1, 90,185, 0, 16, 0, 0, -/* 0x01c0 */ 41,219,104,192, 0, 0, 0, 88,205,128, 91,106, 6, 88,205,128, -/* 0x01d0 */ 95, 41,192, 60,175,175,117,252, 91, 89, 80, 80, 80, 80, 80, 80, -/* 0x01e0 */ 80, 80,176, 91,255, 39,135, 92, 36, 4,137,217,129,227, 0,240, -/* 0x01f0 */ 255,255, 41,217, 3, 76, 36, 8,139, 84, 36, 12,106,125, 88,205, -/* 0x0200 */ 128, 61, 0,240,255,255,118, 1,244,139, 92, 36, 4,195, 85, 83, -/* 0x0210 */ 86, 87,139, 92, 36, 20,139, 76, 36, 24,139, 84, 36, 28,139,116, -/* 0x0220 */ 36, 32,139,124, 36, 36,139,108, 36, 40,193,237, 12,104,192, 0, -/* 0x0230 */ 0, 0, 88,205,128, 95, 94, 91, 93,195, 0, 0, 87, 86,137,206, -/* 0x0240 */ 83,137,195, 57, 8,139,120, 4,115, 10,106,127, 91,106, 1, 88, -/* 0x0250 */ 205,128,235,254,133,201,116, 8,138, 7, 71,136, 2, 66,226,248, -/* 0x0260 */ 1,115, 4, 41, 51, 91, 94, 95,195, 85,137,229, 87, 86,137,198, -/* 0x0270 */ 83,137,211,131,236, 24,139, 69, 8,139,125, 12,137, 69,220,131, -/* 0x0280 */ 58, 0, 15,132,185, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0, -/* 0x0290 */ 137,240,232,165,255,255,255,139, 69,228,139, 77,232,133,192,117, -/* 0x02a0 */ 19,129,249, 85, 80, 88, 33,117, 15,131, 62, 0, 15,132,143, 0, -/* 0x02b0 */ 0, 0,235, 4,133,201,117, 10,106,127, 91,106, 1, 88,205,128, -/* 0x02c0 */ 235,254, 57,193,119,242, 59, 3,119,238, 57,193,115, 86,137, 69, -/* 0x02d0 */ 224,141, 69,224,255,117,236, 80,255,115, 4, 81,255,118, 4,255, -/* 0x02e0 */ 85,220,131,196, 20,133,192,117,207,139, 85,224, 59, 85,228,117, -/* 0x02f0 */ 199,138, 69,237,132,192,116, 34,133,255,116, 30,129,250, 0, 2, -/* 0x0300 */ 0, 0,119, 4, 57, 19,117, 18, 15,182,192, 80, 15,182, 69,238, -/* 0x0310 */ 80, 82,255,115, 4,255,215,131,196, 16,139, 69,232, 1, 70, 4, -/* 0x0320 */ 41, 6,235, 10,139, 83, 4,137,240,232, 14,255,255,255,139, 85, -/* 0x0330 */ 228,139, 3, 1, 83, 4, 41,208,133,192,137, 3,233, 65,255,255, -/* 0x0340 */ 255,141,101,244, 91, 94, 95,201,195, 87,133,192, 86,137,207, 83, -/* 0x0350 */ 137,214,116, 63,168, 1,117, 59, 49,219, 49,201,139, 16, 57,242, -/* 0x0360 */ 117, 6, 65,137,120, 4,235, 9,131,250, 1,117, 4,137,195,235, -/* 0x0370 */ 29,133,210,117, 25,133,201,117, 26,133,219,116, 7,137, 51,137, -/* 0x0380 */ 123, 4,235, 15,106,127, 91,106, 1, 88,205,128,235,254,131,192, -/* 0x0390 */ 8,235,201, 91, 94, 95,195,184, 0,240,255,255,195, 85,137,229, -/* 0x03a0 */ 87, 86, 83,131,236, 76,137, 69,228,137, 85,224,139, 69, 8,139, -/* 0x03b0 */ 85, 12,139, 77, 16,137, 69,220,139,117, 20,137, 85,216,137, 77, -/* 0x03c0 */ 212,137,117,208,232,206,255,255,255,139, 85,224,137,198,247,208, -/* 0x03d0 */ 3, 82, 28,137, 69,204,131,125,220, 0,137, 85,200,116, 41,139, -/* 0x03e0 */ 77,212,139, 1,102,131,120, 16, 2,141, 80, 52,117, 12,139, 66, -/* 0x03f0 */ 8,199, 69,196, 0, 0, 0, 0,235, 6, 43, 66, 40,137, 69,196, -/* 0x0400 */ 3, 66, 20,137, 69,240,235,127,139, 69,224,139, 85,224,102,131, -/* 0x0410 */ 120, 16, 3, 15,183, 82, 44,139, 93,200, 15,149,192, 15,182,248, -/* 0x0420 */ 137, 85,192,232,111,255,255,255,139, 77,192,193,231, 4,137,240, -/* 0x0430 */ 49,246, 73,199, 69,188,255,255,255,255,120, 33,139, 77,192,131, -/* 0x0440 */ 59, 1,117, 20,139, 83, 8, 59, 85,188,115, 3,137, 85,188, 3, -/* 0x0450 */ 83, 20, 57,214,115, 2,137,214,131,195, 32,226,226,139, 93,188, -/* 0x0460 */ 106, 0,106,255,131,207, 34, 33,195, 87, 41,222,106, 0, 41,198, -/* 0x0470 */ 78, 33,198, 86, 83,232,148,253,255,255,131,196, 24, 1,198, 41, -/* 0x0480 */ 216,137,117,240,137, 69,196,139,117,224,199, 69,184, 0, 0, 0, -/* 0x0490 */ 0,102,131,126, 44, 0, 15,132,110, 2, 0, 0,131,125,220, 0, -/* 0x04a0 */ 116, 32,139, 69,200,131, 56, 6,117, 24,139, 77,196,186, 3, 0, -/* 0x04b0 */ 0, 0, 3, 72, 8,139, 69,216,232,140,254,255,255,233, 49, 2, -/* 0x04c0 */ 0, 0,139, 85,200,131, 58, 1, 15,133, 37, 2, 0, 0,131,122, -/* 0x04d0 */ 20, 0, 15,132, 27, 2, 0, 0,131,125,220, 0,116, 65,131,122, -/* 0x04e0 */ 4, 0,117, 59,139,117,224,139, 77,196, 3, 74, 8,186, 3, 0, -/* 0x04f0 */ 0, 0, 3, 78, 28,139, 69,216,232, 76,254,255,255, 15,183, 78, -/* 0x0500 */ 44,139, 69,216,186, 5, 0, 0, 0,232, 59,254,255,255, 15,183, -/* 0x0510 */ 78, 42,139, 69,216,186, 4, 0, 0, 0,232, 42,254,255,255,139, -/* 0x0520 */ 69,200,187, 64, 98, 81,115,139, 72, 24,131,225, 7,193,225, 2, -/* 0x0530 */ 211,235,139, 77,200,137,218,131,226, 7,139,113, 20,137, 85,180, -/* 0x0540 */ 139, 80, 16,139, 69,196, 3, 65, 8,137, 85,232,139, 77,204, 1, -/* 0x0550 */ 198, 33,193,137,117,176,137,198, 41,206,131,125,220, 0,137, 69, -/* 0x0560 */ 236,141, 60, 10,116, 58,106, 0,106,255,106, 50,141, 71, 3,106, -/* 0x0570 */ 3, 80, 86,232,150,252,255,255,131,196, 24, 57,198, 15,133, 36, -/* 0x0580 */ 1, 0, 0,128,227, 4,139, 69,208,117, 2, 49,192, 80,139, 69, -/* 0x0590 */ 220,255,117,228,141, 85,232,232,205,252,255,255, 88, 90,235, 35, -/* 0x05a0 */ 139, 85,200,139, 66, 4, 41,200, 80,255,117,228,106, 18,255,117, -/* 0x05b0 */ 180, 87, 86,232, 86,252,255,255,131,196, 24, 57,198, 15,133,228, -/* 0x05c0 */ 0, 0, 0,137,249,139, 69,204,247,217, 33,193,246, 69,180, 2, -/* 0x05d0 */ 137, 77,168,116, 13,133,201,141, 4, 62,116, 6,198, 0, 0, 64, -/* 0x05e0 */ 226,250,131,125,220, 0, 15,132,197, 0, 0, 0,139, 85,200,199, -/* 0x05f0 */ 69,172, 0, 0, 0, 0,131, 58, 1, 15,133,151, 0, 0, 0,246, -/* 0x0600 */ 66, 24, 1, 15,132,141, 0, 0, 0,137,209,139, 82, 20,137,200, -/* 0x0610 */ 139, 73, 8,141, 28, 10, 3, 93,196, 59, 80, 16,117, 14,137,216, -/* 0x0620 */ 247,216, 37,255, 15, 0, 0,131,248, 3,119, 53,139, 85,200,107, -/* 0x0630 */ 69,196, 52,131,122, 4, 0,141, 92, 1, 12,116, 36,106, 0,106, -/* 0x0640 */ 255,106, 34,106, 3,104, 0, 16, 0, 0,106, 0,199, 69,172, 1, -/* 0x0650 */ 0, 0, 0,232,182,251,255,255,131,196, 24,133,192,137,195,116, -/* 0x0660 */ 53,139, 3, 61,205,128, 97,195,116, 6,199, 3,205,128, 97,195, -/* 0x0670 */ 131,125,172, 0,116, 13,106, 5,106, 4, 83,232,102,251,255,255, -/* 0x0680 */ 131,196, 12,133,219,116, 15,139, 69,216,137,217, 49,210,131,224, -/* 0x0690 */ 254,232,179,252,255,255,255,117,180, 87, 86,232, 70,251,255,255, -/* 0x06a0 */ 131,196, 12,133,192,116, 10,106,127, 91,106, 1, 88,205,128,235, -/* 0x06b0 */ 254,139, 77,168,141, 4, 15,141, 28, 6, 59, 93,176,115, 30,106, -/* 0x06c0 */ 0,106,255,106, 50,255,117,180, 41, 93,176,255,117,176, 83,232, -/* 0x06d0 */ 58,251,255,255,131,196, 24, 57,195,116, 24,235,254,131,125,220, -/* 0x06e0 */ 0,116, 16,141, 79, 3, 35, 77,204,131,249, 3,119, 5,106, 91, -/* 0x06f0 */ 88,205,128,139,117,224,255, 69,184, 15,183, 70, 44,131, 69,200, -/* 0x0700 */ 32, 57, 69,184, 15,140,146,253,255,255,131,125,212, 0,116, 8, -/* 0x0710 */ 139, 85,196,139, 69,212,137, 16,139, 77,224,139, 73, 24, 1, 77, -/* 0x0720 */ 196,139, 69,196,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, -/* 0x0730 */ 86, 83,131,236, 32,199, 69,232, 0, 0, 0, 0,139, 69, 8,139, -/* 0x0740 */ 117, 16,137, 69,236,128, 62,235,117, 6,141, 86, 2,137, 85,232, -/* 0x0750 */ 106, 0,139,125, 28,141, 85, 24,139, 93, 32,141, 69, 32, 86,232, -/* 0x0760 */ 5,251,255,255,139, 69, 12, 41, 93, 36,137,250,141, 93,240,255, -/* 0x0770 */ 117,232,137, 69, 32,139, 69, 40, 83,255,117,236,137, 69,240,141, -/* 0x0780 */ 69, 32,141, 79, 52, 80,137,240,137, 77,228,232, 13,252,255,255, -/* 0x0790 */ 137,193,137, 69,224,139, 69,236,186, 9, 0, 0, 0,232,167,251, -/* 0x07a0 */ 255,255,102,139, 79, 44,131,196, 24, 49,210,102,133,201,116,123, -/* 0x07b0 */ 139, 69,228,131, 56, 3,117,103,139, 93,240, 49,201, 3, 88, 8, -/* 0x07c0 */ 137,202,106, 5, 88,205,128,133,192,137,198,120, 21,186, 0, 2, -/* 0x07d0 */ 0, 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0, -/* 0x07e0 */ 116, 10,106,127, 91,106, 1, 88,205,128,235,254,141, 69,240,137, -/* 0x07f0 */ 250,106, 0,137,243, 80,137,240,255,117,236,106, 0,232,155,251, -/* 0x0800 */ 255,255,139, 77,240,137, 69,224,139, 69,236,186, 7, 0, 0, 0, -/* 0x0810 */ 232, 52,251,255,255,131,196, 16,106, 6, 88,205,128,235, 12, 66, -/* 0x0820 */ 15,183,193,131, 69,228, 32, 57,194,124,133,139, 69,224,141,101, -/* 0x0830 */ 244, 91, 94, 95,201,195 +/* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0020 */ 12, 39, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, +/* 0x0030 */ 21, 0, 18, 0, 91, 83,235, 32,232, 0, 0, 0, 0, 89,139,129, +/* 0x0040 */ 235,255,255,255,195,232, 0, 0, 0, 0, 89,139,129,226,255,255, +/* 0x0050 */ 255,133,192,116, 2, 1,200,195,137,230,246,195, 2,117, 6,129, +/* 0x0060 */ 236, 0, 16, 0, 0,137,231,106, 8, 89,243,165, 85,137,229,173, +/* 0x0070 */ 133,192,171,117,250, 87,246,195, 2,117, 1,171,173,133,192,171, +/* 0x0080 */ 117,250, 87,173,133,192,171,165,117,249,246,195, 2,116, 13, 95, +/* 0x0090 */ 89,106,255,143, 68, 36, 24,233,150, 0, 0, 0, 64,131,239, 8, +/* 0x00a0 */ 185, 10, 0, 0, 0,243,171, 72,171,171, 41,125,248, 87, 86,232, +/* 0x00b0 */ 15, 0, 0, 0, 47,112,114,111, 99, 47,115,101,108,102, 47,101, +/* 0x00c0 */ 120,101, 0, 91, 41,201,106, 5, 88,205,128,137, 68, 36, 40,186, +/* 0x00d0 */ 215, 15, 0, 0,137,249,106, 85, 88,205,128,133,192,121, 7,137, +/* 0x00e0 */ 217,184, 14, 0, 0, 0,141,116, 1,255,145,253, 95, 79,176, 0, +/* 0x00f0 */ 170,243,164,184, 32, 32, 32, 61,131,239, 3,137, 7,139, 69,252, +/* 0x0100 */ 137, 56,131,231,252, 94,137,241, 41,225,137,200, 49,248,131,224, +/* 0x0110 */ 4, 41,199, 90, 1,250,175,173,193,233, 2, 73,243,165,252,141, +/* 0x0120 */ 79, 4, 49,192, 41,225,137,231,193,233, 2,243,171,137,252,137, +/* 0x0130 */ 215, 88, 93, 88,131,224,252, 94, 93,129,236, 0, 10, 0, 0, 84, +/* 0x0140 */ 87, 85, 86, 80,232,252,255,255,255,137,198,139, 77,104,137,235, +/* 0x0150 */ 102,131,125, 16, 2,117, 7,176, 45,232, 52, 0, 0, 0,176, 91, +/* 0x0160 */ 232, 52, 0, 0, 0,137,250,137,231,185,133, 2, 0, 0, 49,192, +/* 0x0170 */ 243,171,137,252, 88, 89, 95, 91, 86, 81, 80, 82, 87, 91,133,255, +/* 0x0180 */ 120, 31, 83, 41,237,106, 2, 94,106, 1, 90,185, 0, 16, 0, 0, +/* 0x0190 */ 41,219,176,192,232, 52, 0, 0, 0, 91,176, 6,232, 52, 0, 0, +/* 0x01a0 */ 0, 95, 41,192, 60,175,175,117,252, 91, 89, 80, 80, 80, 80, 80, +/* 0x01b0 */ 80, 80, 80,176, 91,255, 39, 0, 85,137,229, 86, 83,131,236, 64, +/* 0x01c0 */ 139,117, 8,106, 64,104,255, 0, 0, 0,141, 93,184, 83,232,252, +/* 0x01d0 */ 255,255,255, 83, 86,232,252,255,255,255,137,194,131,196, 20,133, +/* 0x01e0 */ 192,120, 21, 15,183, 69,192, 37, 0,240, 0, 0,185, 0, 0, 0, +/* 0x01f0 */ 0, 61, 0, 64, 0, 0,116, 23,131,250,254,117, 16,104,192, 1, +/* 0x0200 */ 0, 0, 86,232,252,255,255,255,137,194,131,196, 8,137,209,137, +/* 0x0210 */ 200,141,101,248, 91, 94,201,195,139, 68, 36, 4,137,194,131,226, +/* 0x0220 */ 31,131,224, 63,131,250, 26,118, 12,168, 32,116, 5,131,232, 70, +/* 0x0230 */ 235, 3,131,232, 43,131,192, 64,195, 85,137,229, 87, 86, 83,131, +/* 0x0240 */ 236, 20,232, 12, 0, 0, 0, 47,100, 97,116, 97, 47,100, 97,116, +/* 0x0250 */ 97, 47, 0, 90,139, 2,139, 77, 8,137, 1,139, 66, 4,137, 65, +/* 0x0260 */ 4,102,139, 66, 8,102,137, 65, 8,138, 66, 10,136, 65, 10,198, +/* 0x0270 */ 65, 11, 0, 81,232, 63,255,255,255,131,196, 4,232, 19, 0, 0, +/* 0x0280 */ 0, 47,112,114,111, 99, 47,115,101,108,102, 47, 99,109,100,108, +/* 0x0290 */ 105,110,101, 0, 94,185, 0, 0, 0, 0,137,243,137,202,106, 5, +/* 0x02a0 */ 88,205,128,137, 69,232,139,117, 12,186,255, 15, 0, 0,137,195, +/* 0x02b0 */ 137,241,106, 3, 88,205,128,137,199,139, 93,232,106, 6, 88,205, +/* 0x02c0 */ 128,137,248,133,255, 15,136,178, 0, 0, 0,198, 4, 62, 0,128, +/* 0x02d0 */ 62, 0,116, 6, 70,128, 62, 0,117,250,137,240,128, 62, 47,116, +/* 0x02e0 */ 6, 78,128, 62, 47,117,250, 41,240, 80, 86,139, 69, 8,131,192, +/* 0x02f0 */ 10, 80,232,252,255,255,255,137,195,198, 0, 0,255,117, 8,232, +/* 0x0300 */ 180,254,255,255,131,196, 16,232, 7, 0, 0, 0, 47, 99, 97, 99, +/* 0x0310 */ 104,101, 0, 90,139, 2,137, 3,102,139, 66, 4,102,137, 67, 4, +/* 0x0320 */ 131,195, 6,198, 3, 0,255,117, 8,232,138,254,255,255,232, 5, +/* 0x0330 */ 0, 0, 0, 47,117,112,120, 0, 88,139, 0,137, 3,141,115, 4, +/* 0x0340 */ 106, 20, 88,205,128,137,195,137, 4, 36,232,201,254,255,255,136, +/* 0x0350 */ 6,137,216,193,232, 6,137, 4, 36,232,186,254,255,255,136, 70, +/* 0x0360 */ 1,137,216,193,232, 12,137, 4, 36,232,170,254,255,255,131,196, +/* 0x0370 */ 4,136, 70, 2,198, 70, 3, 0,184, 0, 0, 0, 0,141,101,244, +/* 0x0380 */ 91, 94, 95,201,195, 86, 83,139,116, 36, 12,139, 92, 36, 16,139, +/* 0x0390 */ 76, 36, 20, 73,131,249,255,116, 30,138, 22,131,202, 32, 15,190, +/* 0x03a0 */ 210,138, 3,131,200, 32, 15,190,192, 67, 70, 41,194,137,208,117, +/* 0x03b0 */ 11, 73,131,249,255,117,226,184, 0, 0, 0, 0, 91, 94,195, 85, +/* 0x03c0 */ 137,229, 87, 86, 83,129,236, 44, 16, 0, 0,232, 4, 0, 0, 0, +/* 0x03d0 */ 117,112,120, 0, 91,185, 16, 0, 0, 0,186,100, 1, 0, 0,137, +/* 0x03e0 */ 208,205,128,137,198,141, 68, 36, 15,131,224,240,137, 69,240,199, +/* 0x03f0 */ 0, 0, 0, 0, 0, 80,232,252,255,255,255,232, 5, 0, 0, 0, +/* 0x0400 */ 97,110,100,114, 0, 88,199, 4, 36, 4, 0, 0, 0,255,117,240, +/* 0x0410 */ 80,232,111,255,255,255,137,199,131,196, 12,133,192,117, 99,131, +/* 0x0420 */ 125, 16, 0,117, 8,232,252,255,255,255,137, 69, 16,133,255,117, +/* 0x0430 */ 81,131,254,218,117, 76,131,125, 16, 0,116, 70,139, 85, 16,128, +/* 0x0440 */ 58, 0,117, 22,255,117,240, 82,232,236,253,255,255,131,196, 8, +/* 0x0450 */ 137,193,133,192, 15,136,211, 0, 0, 0,185,194, 0, 0, 0,190, +/* 0x0460 */ 192, 1, 0, 0,139, 93, 16,137,242,106, 5, 88,205,128,137,198, +/* 0x0470 */ 137,193,133,192, 15,136,179, 0, 0, 0,139, 93, 16,106, 10, 88, +/* 0x0480 */ 205,128,131,125, 12, 0,116,106,133,255,116, 22,137,243,139, 77, +/* 0x0490 */ 12,106, 93, 88,205,128,137,193,133,192, 15,136,141, 0, 0, 0, +/* 0x04a0 */ 235, 80,104, 0, 16, 0, 0,106, 0,255,117,240,232,252,255,255, +/* 0x04b0 */ 255,139,125, 12,131,196, 12,133,255,116, 41,137,125,216,129,255, +/* 0x04c0 */ 0, 16, 0, 0,118, 7,199, 69,216, 0, 16, 0, 0,137,243,139, +/* 0x04d0 */ 77,240,139, 85,216,106, 4, 88,205,128, 59, 69,216,117, 64, 43, +/* 0x04e0 */ 125,216,117,215,185, 0, 0, 0, 0,137,243,137,202,106, 19, 88, +/* 0x04f0 */ 205,128,106, 0, 86,131,125, 8, 1, 25,192,131,224,240,131,192, +/* 0x0500 */ 17, 80,106, 3,255,117, 12,255,117, 8,232,252,255,255,255,137, +/* 0x0510 */ 194,131,196, 24,137,193, 61, 0,240,255,255,119, 16,235, 7,185, +/* 0x0520 */ 228,255,255,255,235, 7,141, 70, 1,137,193, 9,209,137,200,141, +/* 0x0530 */ 101,244, 91, 94, 95,201,195, 0, 87, 86, 83,137,195,139,124, 36, +/* 0x0540 */ 16,139, 11,139, 64, 4, 57,249,137,198,115, 10,106,127, 91,106, +/* 0x0550 */ 1, 88,205,128,235,254,133,255,116, 15,137,249,138, 6, 70,136, +/* 0x0560 */ 2, 66,226,248,139, 67, 4,139, 11, 1,248, 41,249,137, 67, 4, +/* 0x0570 */ 137, 11, 91, 94, 95,195, 85,137,229, 87, 86,137,198, 83,137,211, +/* 0x0580 */ 131,236, 20,139, 58,133,255, 15,132,129, 0, 0, 0,141,125,228, +/* 0x0590 */ 235, 58,137, 69,224,141, 69,224, 80,139, 70, 4,255,115, 4,131, +/* 0x05a0 */ 232, 12, 80,232,252,255,255,255,131,196, 12,133,192,117,118,139, +/* 0x05b0 */ 85,228, 59, 85,224,117,110,139, 69,232, 41, 6, 1, 70, 4,139, +/* 0x05c0 */ 3, 1, 83, 4, 41,208,133,192,137, 3,116, 66,106, 12,137,240, +/* 0x05d0 */ 137,250,232, 97,255,255,255,139, 69,228, 89,133,192,116, 55,139, +/* 0x05e0 */ 77,232,133,201,116, 63, 57,193,119, 59, 59, 3,119, 55, 57,193, +/* 0x05f0 */ 114,160,139, 83, 4, 81,137,240,232, 59,255,255,255,139, 85,228, +/* 0x0600 */ 88,139, 3, 1, 83, 4, 41,208,133,192,137, 3,117,190,141,101, +/* 0x0610 */ 244, 91, 94, 95,201,195,129,125,232, 85, 80, 88, 33,117, 6,139, +/* 0x0620 */ 22,133,210,116,233,106,127, 91,106, 1, 88,205,128,235,254, 85, +/* 0x0630 */ 133,192, 87, 86, 83,139,116, 36, 20,116, 60,168, 1,117, 56,189, +/* 0x0640 */ 0, 0, 0, 0,187, 0, 0, 0, 0,139, 8, 57,209,116, 18,131, +/* 0x0650 */ 249, 1,116, 40,133,201,116, 17,131,192, 8,139, 8, 57,209,117, +/* 0x0660 */ 238, 67,133,201,137,112, 4,117,239,133,219,117, 10,133,237,116, +/* 0x0670 */ 18,137, 85, 0,137,117, 4, 91, 94, 95, 93,195,137,197,131,192, +/* 0x0680 */ 8,235,216,106,127, 91,106, 1, 88,205,128,235,254, 85,137,229, +/* 0x0690 */ 87, 86, 83,129,236, 0, 16, 0, 0,141,189,244,239,255,255,139, +/* 0x06a0 */ 117, 16,139, 93, 12, 86, 83, 87,232,252,255,255,255,106, 0,106, +/* 0x06b0 */ 255,106, 50,106, 3,255,117, 8, 83,232,252,255,255,255,131,196, +/* 0x06c0 */ 36, 86, 87, 83,232,252,255,255,255,131,196, 12,141,101,244, 91, +/* 0x06d0 */ 94, 95,201,195, 85,137,229, 87, 86, 83,131,236,100,137, 69,224, +/* 0x06e0 */ 137, 85,220,139,117,224,139, 93,220,199, 69,204, 0, 0, 0, 0, +/* 0x06f0 */ 139, 69, 8,139, 85, 12,139, 77, 16,137, 69,216, 3,118, 28,133, +/* 0x0700 */ 219,137, 85,212,137, 77,208,199, 69,240, 0, 0, 0, 0, 15,132, +/* 0x0710 */ 235, 2, 0, 0,139, 1,141, 80, 52,137,195,139, 69,224, 43, 90, +/* 0x0720 */ 40,102,131,120, 16, 2, 15,132,203, 2, 0, 0,137, 93,204,139, +/* 0x0730 */ 74, 20,141, 4, 25,137, 69,240,106, 91, 88,205,128,232,252,255, +/* 0x0740 */ 255,255,139, 77,224,199, 69,192, 0, 0, 0, 0,102,139, 81, 44, +/* 0x0750 */ 102,133,210, 15,132, 99, 1, 0, 0,247,208,137, 69,164,235, 18, +/* 0x0760 */ 255, 69,192, 15,183,194,131,198, 32, 59, 69,192, 15,142, 74, 1, +/* 0x0770 */ 0, 0,139, 77,220,133,201, 15,132, 89, 1, 0, 0,139, 6,131, +/* 0x0780 */ 248, 6, 15,132, 85, 1, 0, 0, 72,117,213,139, 94, 20,133,219, +/* 0x0790 */ 116,206,139, 78, 24,199, 69,188, 64, 98, 81,115,139, 69,220,131, +/* 0x07a0 */ 225, 7,193,225, 2,211,109,188,131,101,188, 7,133,192,116, 11, +/* 0x07b0 */ 139, 70, 4,133,192, 15,132,219, 1, 0, 0,139, 69,204,199, 69, +/* 0x07c0 */ 156, 0, 0, 0, 0, 3, 70, 8,139, 86, 16,141, 12, 16, 1,195, +/* 0x07d0 */ 137,199,137, 69,236,137, 77,176,139, 77,164,137, 85,232, 33,193, +/* 0x07e0 */ 139, 69,220, 1,202, 41,207,133,192,137, 93,180,137, 85,184, 15, +/* 0x07f0 */ 132,168, 2, 0, 0,246, 70, 24, 1, 15,133,116, 1, 0, 0,139, +/* 0x0800 */ 69,220,133,192, 15,132,147, 2, 0, 0,139, 69,188,106, 0,106, +/* 0x0810 */ 255,131,200, 2,106, 50,131,224,251, 80,255,117,184, 87,232,252, +/* 0x0820 */ 255,255,255,131,196, 24, 57,248, 15,133, 59, 1, 0, 0,139, 93, +/* 0x0830 */ 220,133,219,116, 11,141, 85,232,139, 69,220,232, 54,253,255,255, +/* 0x0840 */ 246, 69,188, 2, 15,133,218, 0, 0, 0,139, 77,220,133,201, 15, +/* 0x0850 */ 132,243, 0, 0, 0,246, 70, 24, 1, 15,132,233, 0, 0, 0,131, +/* 0x0860 */ 62, 1,139, 85,236, 15,132, 89, 2, 0, 0,137,251,139, 77,184, +/* 0x0870 */ 106, 91, 88,205,128,106, 0,255,117,156,106, 17,255,117,188,255, +/* 0x0880 */ 117,184, 87,232,252,255,255,255,131,196, 24, 57,248, 15,133,214, +/* 0x0890 */ 0, 0, 0,139, 93,156,106, 6, 88,205,128,139, 69,180, 57, 69, +/* 0x08a0 */ 176,114, 88,139, 93,224,131,198, 32,255, 69,192,102,139, 83, 44, +/* 0x08b0 */ 15,183,194, 59, 69,192, 15,143,182,254,255,255,139, 85,204,139, +/* 0x08c0 */ 69,208,139, 77,224,137, 16,139, 73, 24,141,101,244, 91, 94, 1, +/* 0x08d0 */ 202, 95,137,208,201,195,139, 6,233,171,254,255,255,139, 69,204, +/* 0x08e0 */ 186, 0, 0, 0, 0, 3, 70, 8, 82,186, 3, 0, 0, 0, 80,139, +/* 0x08f0 */ 69,212,232, 56,253,255,255, 88, 90,235,168,106, 0,139, 85,176, +/* 0x0900 */ 106,255,106, 50, 41,208,255,117,188, 80, 82,232,252,255,255,255, +/* 0x0910 */ 131,196, 24, 59, 69,176,117, 81,139, 77,224,102,139, 81, 44,233, +/* 0x0920 */ 60,254,255,255,139, 93,176,247,219, 35, 93,164, 83,106, 0,255, +/* 0x0930 */ 117,176,232,252,255,255,255,139, 77,220, 1, 93,176,131,196, 12, +/* 0x0940 */ 133,201, 15,133, 13,255,255,255,131,125,188, 3, 15,132, 73,255, +/* 0x0950 */ 255,255,255,117,188,255,117,184, 87,232,252,255,255,255,131,196, +/* 0x0960 */ 12,133,192, 15,132, 50,255,255,255,106,127, 91,106, 1, 88,205, +/* 0x0970 */ 128,235,254,106, 0, 82, 87,232,252,255,255,255,131,196, 12,137, +/* 0x0980 */ 194,129,226,255, 15, 0, 0, 41,208, 57,248,117,220, 74,137, 85, +/* 0x0990 */ 156,233,152,254,255,255,139, 85,224,139, 69,204, 3, 70, 8, 3, +/* 0x09a0 */ 66, 28,186, 0, 0, 0, 0, 82,186, 3, 0, 0, 0, 80,139, 69, +/* 0x09b0 */ 212,232,121,252,255,255,139, 77,224,186, 0, 0, 0, 0, 15,183, +/* 0x09c0 */ 65, 44, 82,186, 5, 0, 0, 0, 80,139, 69,212,232, 94,252,255, +/* 0x09d0 */ 255,139, 93,224,186, 0, 0, 0, 0, 15,183, 67, 42, 82,186, 4, +/* 0x09e0 */ 0, 0, 0, 80,139, 69,212,232, 67,252,255,255,139, 94, 20,131, +/* 0x09f0 */ 196, 24,233,196,253,255,255,139, 90, 8,233, 48,253,255,255,139, +/* 0x0a00 */ 85,224,184, 0, 0, 0, 0,139, 93,224,191,255,255,255,255,102, +/* 0x0a10 */ 131,122, 16, 3,199, 69,196, 0, 0, 0, 0, 15,183, 75, 44,137, +/* 0x0a20 */ 242,139, 93,208, 15,149,192,193,224, 4,139, 27,131,192, 34,137, +/* 0x0a30 */ 69,160,137,200, 72,137, 93,200,187, 0, 0, 0, 0,120, 10,131, +/* 0x0a40 */ 58, 1,116, 69,131,194, 32,226,246,232,252,255,255,255, 33,199, +/* 0x0a50 */ 41,251, 41,195, 75, 33,195,246, 69,160, 16, 15,132,170, 0, 0, +/* 0x0a60 */ 0,137,125,196,106, 0,106,255,255,117,160,106, 0, 83,255,117, +/* 0x0a70 */ 196,232,252,255,255,255,131,196, 24,141, 20, 3, 41,248,137, 69, +/* 0x0a80 */ 204,137, 85,240,233,180,252,255,255,139, 66, 8, 57,248,115, 2, +/* 0x0a90 */ 137,199, 3, 66, 20, 57,216,118,171,137,195,235,167,139, 70, 4, +/* 0x0aa0 */ 41,200, 80,255,117,216,106, 18,255,117,188,255,117,184, 87,232, +/* 0x0ab0 */ 252,255,255,255,131,196, 24, 57,248, 15,132,129,253,255,255,233, +/* 0x0ac0 */ 165,254,255,255,139, 70, 20, 43, 70, 16,199, 69,228,205,128, 97, +/* 0x0ad0 */ 195, 1,194,137,208,247,216, 35, 69,164,131,248, 3,118, 75,199, +/* 0x0ae0 */ 2,205,128, 97,195,133,210, 15,132,126,253,255,255,139, 69,212, +/* 0x0af0 */ 185, 0, 0, 0, 0, 81, 82,131,224,254,186, 0, 0, 0, 0,232, +/* 0x0b00 */ 43,251,255,255, 88, 90,233, 96,253,255,255,133,255, 15,133, 81, +/* 0x0b10 */ 255,255,255,139, 85,200,133,210,137, 85,196, 15,132, 67,255,255, +/* 0x0b20 */ 255,131, 77,160, 16,233, 58,255,255,255,106, 0,106, 4,106, 0, +/* 0x0b30 */ 232,252,255,255,255,131,196, 12,137,195,137, 69,152,129,227,255, +/* 0x0b40 */ 15, 0, 0,141, 77,228, 75,186, 4, 0, 0, 0,137, 93,148,106, +/* 0x0b50 */ 4, 88,205,128,106, 0,255,117,148,106, 2,106, 5,106, 4,129, +/* 0x0b60 */ 101,152, 0,240,255,255,255,117,152,232,252,255,255,255,131,196, +/* 0x0b70 */ 24,137,194,139, 93,148,106, 6, 88,205,128,233,101,255,255,255, +/* 0x0b80 */ 85,137,229, 87, 86, 83,131,236, 56,139, 85, 8,139, 69, 20,139, +/* 0x0b90 */ 77, 24,137, 85,232,137, 69,216,139, 2,137, 85,224,137, 69,236, +/* 0x0ba0 */ 139, 66, 4,141, 85,236,131,192, 12,137, 77,212,137, 69,228,139, +/* 0x0bb0 */ 69, 12,137, 77,240,137, 69,220,141, 69,228,232,182,249,255,255, +/* 0x0bc0 */ 232,252,255,255,255,141, 69, 16,139, 93,212,141, 85,220, 80,139, +/* 0x0bd0 */ 69,212,255,117,216,131,195, 52,106, 0,137, 93,208,232,242,250, +/* 0x0be0 */ 255,255,186, 0, 0, 0, 0,137, 69,204,139, 69,204, 82,186, 9, +/* 0x0bf0 */ 0, 0, 0, 80,139, 69,216,232, 51,250,255,255,139, 77,212,131, +/* 0x0c00 */ 196, 20,199, 69,200, 0, 0, 0, 0,102,139, 81, 44,102,133,210, +/* 0x0c10 */ 15,132,169, 0, 0, 0,191, 0, 0, 0, 0,235, 19,255, 69,200, +/* 0x0c20 */ 15,183,194,131, 69,208, 32, 59, 69,200, 15,134,143, 0, 0, 0, +/* 0x0c30 */ 139, 93,208,131, 59, 3,117,229,139, 69,208,137,249,139, 93, 16, +/* 0x0c40 */ 137,250, 3, 88, 8,106, 5, 88,205,128,133,192,137,198,120,122, +/* 0x0c50 */ 186, 0, 4, 0, 0,137,195,139, 77,212,106, 3, 88,205,128, 61, +/* 0x0c60 */ 0, 4, 0, 0,117,100,141, 69, 16,186, 0, 0, 0, 0,199, 69, +/* 0x0c70 */ 16, 0, 0, 0, 0,137,243, 80,139, 69,212,106, 0, 86,232, 81, +/* 0x0c80 */ 250,255,255,186, 0, 0, 0, 0,137, 69,204,139, 69, 16, 82,186, +/* 0x0c90 */ 7, 0, 0, 0, 80,139, 69,216,232,146,249,255,255,131,196, 20, +/* 0x0ca0 */ 106, 6, 88,205,128,139, 69,212,255, 69,200,102,139, 80, 44,131, +/* 0x0cb0 */ 69,208, 32, 15,183,194, 59, 69,200, 15,135,113,255,255,255,139, +/* 0x0cc0 */ 69,204,141,101,244, 91, 94, 95,201,195,106,127, 91,106, 1, 88, +/* 0x0cd0 */ 205,128,235,254,135, 92, 36, 4,137,217,129,227, 0,240,255,255, +/* 0x0ce0 */ 41,217, 3, 76, 36, 8,139, 84, 36, 12,176,125,232, 27, 0, 0, +/* 0x0cf0 */ 0, 61, 0,240,255,255,118, 1,244,139, 92, 36, 4,195, 83,141, +/* 0x0d00 */ 92, 36, 8,176, 90,232, 2, 0, 0, 0, 91,195, 15,182,192, 80, +/* 0x0d10 */ 205,128, 90, 61, 0,240,255,255,115, 1,195,244, 85,137,229, 83, +/* 0x0d20 */ 139, 93, 8,139, 77, 12,106,106, 88,205,128, 91, 93,195, 85,137, +/* 0x0d30 */ 229, 83,139, 93, 8,106,109, 88,205,128, 91, 93,195, 85,137,229, +/* 0x0d40 */ 83,139, 93, 8,139, 77, 12,106, 39, 88,205,128, 91, 93,195, 85, +/* 0x0d50 */ 137,229, 87,139, 77, 16,139, 69, 12,139,125, 8, 82,243,170, 88, +/* 0x0d60 */ 95, 93,195, 85,137,229, 87, 86,139, 77, 16,139, 69, 12,139,125, +/* 0x0d70 */ 8, 87,243,164, 88, 94, 95, 93,195, 85,137,229, 87, 86,139, 77, +/* 0x0d80 */ 16,139, 69, 12,139,125, 8,243,164,137,248, 94, 95, 93,195,204, +/* 0x0d90 */ 195, 0, 0, 0,131,124, 36, 16, 73,117, 79, 85,137,229, 83, 86, +/* 0x0da0 */ 87,139,117, 8,139, 77, 12,139, 85, 16,141, 76, 14,253,137,243, +/* 0x0db0 */ 235, 45, 57,206,115, 48, 86, 94,172, 60,128,114, 10, 60,143,119, +/* 0x0dc0 */ 6,128,126,254, 15,116, 6, 44,232, 60, 1,119,229, 57,206,115, +/* 0x0dd0 */ 21, 86,173, 40,208,117,224, 95, 15,200, 41,248, 1,216,171, 57, +/* 0x0de0 */ 206,115, 3,172,235,225, 95, 94, 91, 93,195, 85,137,229, 87, 86, +/* 0x0df0 */ 83,232,107, 0, 0, 0, 80,139,117, 8, 15,182, 70, 9,133,192, +/* 0x0e00 */ 116, 19, 80, 15,182, 70, 10, 80,255, 54,255,117, 12,232,130,255, +/* 0x0e10 */ 255,255,131,196, 16, 88, 91, 94, 95, 93,195,139, 30,131,238,252, +/* 0x0e20 */ 17,219,138, 22,243,195, 1,219,116,241,243,195,141, 4, 47,131, +/* 0x0e30 */ 249, 5,138, 16,118, 30,131,253,252,119, 25,131,233, 4,139, 16, +/* 0x0e40 */ 131,192, 4,131,233, 4,137, 23,141,127, 4,115,241,131,193, 4, +/* 0x0e50 */ 138, 16,116, 11, 64,136, 23, 73,138, 16,141,127, 1,117,245,243, +/* 0x0e60 */ 195,139,117, 8,139,125, 12,173,139, 85, 16,137, 2, 82,173,145, +/* 0x0e70 */ 173, 15,182,208, 1,241, 81, 87, 85, 49,219, 49,201,131,205,255, +/* 0x0e80 */ 252, 15,182, 86,252, 93, 88, 41,199, 88, 89,137, 57, 41,240,195, +/* 0x0e90 */ 128,250, 8, 15,133,199, 0, 0, 0,235, 4, 70,136, 23, 71,138, +/* 0x0ea0 */ 22, 1,219,117, 9,139, 30,131,238,252, 17,219,138, 22,114,235, +/* 0x0eb0 */ 106, 1, 88,235, 16, 72, 1,219,117, 9,139, 30,131,238,252, 17, +/* 0x0ec0 */ 219,138, 22, 17,192, 1,219,117, 9,139, 30,131,238,252, 17,219, +/* 0x0ed0 */ 138, 22, 17,192, 1,219,117, 9,139, 30,131,238,252, 17,219,138, +/* 0x0ee0 */ 22,115,210,131,232, 3,114, 26,193,224, 8, 15,182,210, 9,208, +/* 0x0ef0 */ 70,131,240,255, 15,132,252,255,255,255,209,248,137,197,114, 62, +/* 0x0f00 */ 235, 13, 1,219,117, 7,139, 30,131,238,252, 17,219,114, 47, 65, +/* 0x0f10 */ 1,219,117, 7,139, 30,131,238,252, 17,219,114, 33, 1,219,117, +/* 0x0f20 */ 9,139, 30,131,238,252, 17,219,138, 22, 17,201, 1,219,117, 7, +/* 0x0f30 */ 139, 30,131,238,252, 17,219,115,228,131,193, 2,235, 15, 1,219, +/* 0x0f40 */ 117, 9,139, 30,131,238,252, 17,219,138, 22, 17,201,129,253, 0, +/* 0x0f50 */ 251,255,255,131,209, 2,232,148, 0, 0, 0,233, 63,255,255,255, +/* 0x0f60 */ 87, 94,128,250, 5, 15,133,186, 0, 0, 0,235, 4, 70,136, 23, +/* 0x0f70 */ 71,138, 22, 1,219,117, 9,139, 30,131,238,252, 17,219,138, 22, +/* 0x0f80 */ 114,235,106, 1, 88,235, 16, 72, 1,219,117, 9,139, 30,131,238, +/* 0x0f90 */ 252, 17,219,138, 22, 17,192, 1,219,117, 9,139, 30,131,238,252, +/* 0x0fa0 */ 17,219,138, 22, 17,192, 1,219,117, 9,139, 30,131,238,252, 17, +/* 0x0fb0 */ 219,138, 22,115,210,131,232, 3,114, 24,193,224, 8, 15,182,210, +/* 0x0fc0 */ 9,208, 70,131,240,255, 15,132,252,255,255,255,209,248,137,197, +/* 0x0fd0 */ 235, 13, 1,219,117, 9,139, 30,131,238,252, 17,219,138, 22, 17, +/* 0x0fe0 */ 201, 1,219,117, 9,139, 30,131,238,252, 17,219,138, 22, 17,201, +/* 0x0ff0 */ 117, 32, 65, 1,219,117, 9,139, 30,131,238,252, 17,219,138, 22, +/* 0x1000 */ 17,201, 1,219,117, 7,139, 30,131,238,252, 17,219,115,228,131, +/* 0x1010 */ 193, 2,129,253, 0,251,255,255,131,209, 1,232,148, 0, 0, 0, +/* 0x1020 */ 233, 76,255,255,255, 87, 94,128,250, 2, 15,133,167, 0, 0, 0, +/* 0x1030 */ 235, 4, 70,136, 23, 71,138, 22, 1,219,117, 9,139, 30,131,238, +/* 0x1040 */ 252, 17,219,138, 22,114,235,106, 1, 88, 1,219,117, 9,139, 30, +/* 0x1050 */ 131,238,252, 17,219,138, 22, 17,192, 1,219,117, 9,139, 30,131, +/* 0x1060 */ 238,252, 17,219,138, 22,115,226,131,232, 3,114, 20,193,224, 8, +/* 0x1070 */ 15,182,210, 9,208, 70,131,240,255, 15,132,252,255,255,255,137, +/* 0x1080 */ 197,106, 1, 88, 1,219,117, 9,139, 30,131,238,252, 17,219,138, +/* 0x1090 */ 22, 17,201, 1,219,117, 9,139, 30,131,238,252, 17,219,138, 22, +/* 0x10a0 */ 17,201,117, 33,137,193,131,192, 2, 1,219,117, 9,139, 30,131, +/* 0x10b0 */ 238,252, 17,219,138, 22, 17,201, 1,219,117, 7,139, 30,131,238, +/* 0x10c0 */ 252, 17,219,115,228,129,253, 0,243,255,255, 17,193,232,148, 0, +/* 0x10d0 */ 0, 0,233, 95,255,255,255,137,229,141,156, 36, 0, 0, 0, 0, +/* 0x10e0 */ 49,192, 80, 57,220,117,251, 70, 70, 83,104, 0, 0, 0, 0, 87, +/* 0x10f0 */ 131,195, 4, 83,104, 0, 0, 0, 0, 86,131,195, 4, 83, 80,199, +/* 0x1100 */ 3, 0, 0, 0, 0,137,229,139, 85, 0,172, 74,136,193, 36, 7, +/* 0x1110 */ 192,233, 3,187, 0,253,255,255,211,227,141,164, 92,144,241,255, +/* 0x1120 */ 255,131,228,224,106, 0,106, 0,137,227, 83,131,195, 4,139, 77, +/* 0x1130 */ 0,255, 49, 87, 83,131,195, 4,136, 67, 2,172, 74,136,193, 36, +/* 0x1140 */ 15,136, 3,192,233, 4,136, 75, 1, 82, 86, 83, 80, 85, 87, 86, +/* 0x1150 */ 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68, 36,116, 0, +/* 0x1160 */ 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0, 0, 0,141, +/* 0x1170 */ 66, 4,137, 68, 36,120,184, 1, 0, 0, 0, 15,182, 74, 2,137, +/* 0x1180 */ 195,211,227,137,217, 73,137, 76, 36,108, 15,182, 74, 1,211,224, +/* 0x1190 */ 72,137, 68, 36,104,139,132, 36,168, 0, 0, 0, 15,182, 50,199, +/* 0x11a0 */ 69, 0, 0, 0, 0, 0,199, 68, 36, 96, 0, 0, 0, 0,199, 0, +/* 0x11b0 */ 0, 0, 0, 0,184, 0, 3, 0, 0,137,116, 36,100,199, 68, 36, +/* 0x11c0 */ 92, 1, 0, 0, 0,199, 68, 36, 88, 1, 0, 0, 0,199, 68, 36, +/* 0x11d0 */ 84, 1, 0, 0, 0,199, 68, 36, 80, 1, 0, 0, 0, 15,182, 74, +/* 0x11e0 */ 1, 1,241,211,224,141,136, 54, 7, 0, 0, 57, 76, 36,116,115, +/* 0x11f0 */ 14,139, 68, 36,120,102,199, 0, 0, 4,131,192, 2,226,246,139, +/* 0x1200 */ 156, 36,148, 0, 0, 0, 49,255,199, 68, 36, 72,255,255,255,255, +/* 0x1210 */ 137,218, 3,148, 36,152, 0, 0, 0,137, 84, 36, 76, 49,210, 59, +/* 0x1220 */ 92, 36, 76, 15,132,124, 9, 0, 0, 15,182, 3,193,231, 8, 66, +/* 0x1230 */ 67, 9,199,131,250, 4,126,231,139,140, 36,164, 0, 0, 0, 57, +/* 0x1240 */ 76, 36,116, 15,131,100, 9, 0, 0,139,116, 36,116, 35,116, 36, +/* 0x1250 */ 108,139, 68, 36, 96,139, 84, 36,120,193,224, 4,137,116, 36, 68, +/* 0x1260 */ 1,240,129,124, 36, 72,255,255,255, 0,141, 44, 66,119, 24, 59, +/* 0x1270 */ 92, 36, 76, 15,132, 44, 9, 0, 0,193,100, 36, 72, 8, 15,182, +/* 0x1280 */ 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 85, 0,193, +/* 0x1290 */ 232, 11, 15,183,202, 15,175,193, 57,199, 15,131,221, 1, 0, 0, +/* 0x12a0 */ 137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,138, 76, 36,100,193, +/* 0x12b0 */ 248, 5,190, 1, 0, 0, 0,141, 4, 2, 15,182, 84, 36,115,102, +/* 0x12c0 */ 137, 69, 0,139, 68, 36,116, 35, 68, 36,104,139,108, 36,120,211, +/* 0x12d0 */ 224,185, 8, 0, 0, 0, 43, 76, 36,100,211,250, 1,208,105,192, +/* 0x12e0 */ 0, 6, 0, 0,131,124, 36, 96, 6,141,132, 5,108, 14, 0, 0, +/* 0x12f0 */ 137, 68, 36, 20, 15,142,202, 0, 0, 0,139, 68, 36,116, 43, 68, +/* 0x1300 */ 36, 92,139,148, 36,160, 0, 0, 0, 15,182, 4, 2,137, 68, 36, +/* 0x1310 */ 64,209,100, 36, 64,139, 76, 36, 64,141, 20, 54,139,108, 36, 20, +/* 0x1320 */ 129,225, 0, 1, 0, 0,129,124, 36, 72,255,255,255, 0,141, 68, +/* 0x1330 */ 77, 0,137, 76, 36, 60,141, 44, 16,119, 24, 59, 92, 36, 76, 15, +/* 0x1340 */ 132, 96, 8, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, +/* 0x1350 */ 67, 9,199,139, 68, 36, 72,102,139,141, 0, 2, 0, 0,193,232, +/* 0x1360 */ 11, 15,183,241, 15,175,198, 57,199,115, 35,137, 68, 36, 72,184, +/* 0x1370 */ 0, 8, 0, 0, 41,240,137,214,193,248, 5,131,124, 36, 60, 0, +/* 0x1380 */ 141, 4, 1,102,137,133, 0, 2, 0, 0,116, 34,235, 46, 41, 68, +/* 0x1390 */ 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5,102, 41,193, +/* 0x13a0 */ 131,124, 36, 60, 0,102,137,141, 0, 2, 0, 0,116, 14,129,254, +/* 0x13b0 */ 255, 0, 0, 0, 15,142, 87,255,255,255,235,121,129,254,255, 0, +/* 0x13c0 */ 0, 0,127,113,141, 20, 54,139,108, 36, 20, 1,213,129,124, 36, +/* 0x13d0 */ 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132,196, 7, 0, +/* 0x13e0 */ 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, +/* 0x13f0 */ 68, 36, 72,102,139, 77, 0,193,232, 11, 15,183,241, 15,175,198, +/* 0x1400 */ 57,199,115, 25,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,137, +/* 0x1410 */ 214,193,248, 5,141, 4, 1,102,137, 69, 0,235,159, 41, 68, 36, +/* 0x1420 */ 72, 41,199,137,200,141,114, 1,102,193,232, 5,102, 41,193,102, +/* 0x1430 */ 137, 77, 0,235,135,139, 84, 36,116,137,240,139,140, 36,160, 0, +/* 0x1440 */ 0, 0,136, 68, 36,115,136, 4, 10, 66,131,124, 36, 96, 3,137, +/* 0x1450 */ 84, 36,116,127, 13,199, 68, 36, 96, 0, 0, 0, 0,233, 27, 7, +/* 0x1460 */ 0, 0,131,124, 36, 96, 9,127, 10,131,108, 36, 96, 3,233, 10, +/* 0x1470 */ 7, 0, 0,131,108, 36, 96, 6,233, 0, 7, 0, 0,139, 76, 36, +/* 0x1480 */ 72, 41,199,139,116, 36, 96, 41,193,137,208,102,193,232, 5,102, +/* 0x1490 */ 41,194,129,249,255,255,255, 0,102,137, 85, 0,139,108, 36,120, +/* 0x14a0 */ 141,116,117, 0,137,116, 36, 56,119, 22, 59, 92, 36, 76, 15,132, +/* 0x14b0 */ 241, 6, 0, 0, 15,182, 3,193,231, 8,193,225, 8, 67, 9,199, +/* 0x14c0 */ 139,108, 36, 56,137,200,193,232, 11,102,139,149,128, 1, 0, 0, +/* 0x14d0 */ 15,183,234, 15,175,197, 57,199,115, 82,137,198,184, 0, 8, 0, +/* 0x14e0 */ 0, 41,232,139,108, 36, 88,193,248, 5,139, 76, 36, 84,141, 4, +/* 0x14f0 */ 2,139, 84, 36, 56,137, 76, 36, 80,139, 76, 36,120,102,137,130, +/* 0x1500 */ 128, 1, 0, 0,139, 68, 36, 92,137,108, 36, 84,137, 68, 36, 88, +/* 0x1510 */ 49,192,131,124, 36, 96, 6, 15,159,192,129,193,100, 6, 0, 0, +/* 0x1520 */ 141, 4, 64,137, 68, 36, 96,233,116, 2, 0, 0,137,206, 41,199, +/* 0x1530 */ 41,198,137,208,102,193,232, 5,139, 76, 36, 56,102, 41,194,129, +/* 0x1540 */ 254,255,255,255, 0,102,137,145,128, 1, 0, 0,119, 22, 59, 92, +/* 0x1550 */ 36, 76, 15,132, 77, 6, 0, 0, 15,182, 3,193,231, 8,193,230, +/* 0x1560 */ 8, 67, 9,199,139,108, 36, 56,137,242,193,234, 11,102,139,141, +/* 0x1570 */ 152, 1, 0, 0, 15,183,193, 15,175,208, 57,215, 15,131,227, 0, +/* 0x1580 */ 0, 0,189, 0, 8, 0, 0,137,214, 41,197,199, 68, 36, 52, 0, +/* 0x1590 */ 8, 0, 0,137,232,193,248, 5,141, 4, 1,139, 76, 36, 56,102, +/* 0x15a0 */ 137,129,152, 1, 0, 0,139, 68, 36, 96,139, 76, 36, 68,193,224, +/* 0x15b0 */ 5, 3, 68, 36,120,129,250,255,255,255, 0,141, 44, 72,119, 22, +/* 0x15c0 */ 59, 92, 36, 76, 15,132,219, 5, 0, 0, 15,182, 3,193,231, 8, +/* 0x15d0 */ 193,230, 8, 67, 9,199,102,139,149,224, 1, 0, 0,137,240,193, +/* 0x15e0 */ 232, 11, 15,183,202, 15,175,193, 57,199,115, 96, 41, 76, 36, 52, +/* 0x15f0 */ 193,124, 36, 52, 5,139,116, 36, 52,137, 68, 36, 72,131,124, 36, +/* 0x1600 */ 116, 0,141, 4, 50,102,137,133,224, 1, 0, 0, 15,132,147, 5, +/* 0x1610 */ 0, 0, 49,192,131,124, 36, 96, 6,139,172, 36,160, 0, 0, 0, +/* 0x1620 */ 139, 84, 36,116, 15,159,192,141, 68, 0, 9,137, 68, 36, 96,139, +/* 0x1630 */ 68, 36,116, 43, 68, 36, 92,138, 68, 5, 0,136, 68, 36,115,136, +/* 0x1640 */ 4, 42, 66,137, 84, 36,116,233, 49, 5, 0, 0, 41,198, 41,199, +/* 0x1650 */ 137,208,102,193,232, 5,102, 41,194,102,137,149,224, 1, 0, 0, +/* 0x1660 */ 233, 31, 1, 0, 0,137,200, 41,214,102,193,232, 5,139,108, 36, +/* 0x1670 */ 56,102, 41,193, 41,215,129,254,255,255,255, 0,102,137,141,152, +/* 0x1680 */ 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, 22, 5, 0, 0, 15, +/* 0x1690 */ 182, 3,193,231, 8,193,230, 8, 67, 9,199,139, 76, 36, 56,137, +/* 0x16a0 */ 240,193,232, 11,102,139,145,176, 1, 0, 0, 15,183,202, 15,175, +/* 0x16b0 */ 193, 57,199,115, 35,137,198,184, 0, 8, 0, 0, 41,200,139,108, +/* 0x16c0 */ 36, 56,193,248, 5,141, 4, 2,102,137,133,176, 1, 0, 0,139, +/* 0x16d0 */ 68, 36, 88,233,160, 0, 0, 0,137,241, 41,199, 41,193,137,208, +/* 0x16e0 */ 102,193,232, 5,102, 41,194,139, 68, 36, 56,129,249,255,255,255, +/* 0x16f0 */ 0,102,137,144,176, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, +/* 0x1700 */ 161, 4, 0, 0, 15,182, 3,193,231, 8,193,225, 8, 67, 9,199, +/* 0x1710 */ 139,116, 36, 56,137,200,193,232, 11,102,139,150,200, 1, 0, 0, +/* 0x1720 */ 15,183,234, 15,175,197, 57,199,115, 32,137,198,184, 0, 8, 0, +/* 0x1730 */ 0, 41,232,139,108, 36, 56,193,248, 5,141, 4, 2,102,137,133, +/* 0x1740 */ 200, 1, 0, 0,139, 68, 36, 84,235, 38,137,206, 41,199, 41,198, +/* 0x1750 */ 137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56,102,137,144, +/* 0x1760 */ 200, 1, 0, 0,139, 84, 36, 84,139, 68, 36, 80,137, 84, 36, 80, +/* 0x1770 */ 139, 76, 36, 88,137, 76, 36, 84,139,108, 36, 92,137, 68, 36, 92, +/* 0x1780 */ 137,108, 36, 88, 49,192,131,124, 36, 96, 6,139, 76, 36,120, 15, +/* 0x1790 */ 159,192,129,193,104, 10, 0, 0,141, 68, 64, 8,137, 68, 36, 96, +/* 0x17a0 */ 129,254,255,255,255, 0,119, 22, 59, 92, 36, 76, 15,132,243, 3, +/* 0x17b0 */ 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,102,139, +/* 0x17c0 */ 17,137,240,193,232, 11, 15,183,234, 15,175,197, 57,199,115, 47, +/* 0x17d0 */ 137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193,100, 36, 68, 4, +/* 0x17e0 */ 193,248, 5,199, 68, 36, 44, 0, 0, 0, 0,141, 4, 2,102,137, +/* 0x17f0 */ 1,139, 68, 36, 68,141, 76, 1, 4,137, 76, 36, 16,235,114, 41, +/* 0x1800 */ 198, 41,199,137,208,102,193,232, 5,102, 41,194,129,254,255,255, +/* 0x1810 */ 255, 0,102,137, 17,119, 22, 59, 92, 36, 76, 15,132,132, 3, 0, +/* 0x1820 */ 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,102,139, 81, +/* 0x1830 */ 2,137,240,193,232, 11, 15,183,234, 15,175,197, 57,199,115, 59, +/* 0x1840 */ 137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193,100, 36, 68, 4, +/* 0x1850 */ 193,248, 5,199, 68, 36, 44, 8, 0, 0, 0,141, 4, 2,139, 84, +/* 0x1860 */ 36, 68,102,137, 65, 2,141,140, 17, 4, 1, 0, 0,137, 76, 36, +/* 0x1870 */ 16,199, 68, 36, 48, 3, 0, 0, 0,235, 47, 41,198, 41,199,137, +/* 0x1880 */ 208,137,116, 36, 72,102,193,232, 5,199, 68, 36, 44, 16, 0, 0, +/* 0x1890 */ 0,102, 41,194,199, 68, 36, 48, 8, 0, 0, 0,102,137, 81, 2, +/* 0x18a0 */ 129,193, 4, 2, 0, 0,137, 76, 36, 16,139, 76, 36, 48,186, 1, +/* 0x18b0 */ 0, 0, 0,137, 76, 36, 40,141, 44, 18,139,116, 36, 16, 1,238, +/* 0x18c0 */ 129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132, +/* 0x18d0 */ 209, 2, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, +/* 0x18e0 */ 9,199,139, 68, 36, 72,102,139, 22,193,232, 11, 15,183,202, 15, +/* 0x18f0 */ 175,193, 57,199,115, 24,137, 68, 36, 72,184, 0, 8, 0, 0, 41, +/* 0x1900 */ 200,193,248, 5,141, 4, 2,137,234,102,137, 6,235, 21, 41, 68, +/* 0x1910 */ 36, 72, 41,199,137,208,102,193,232, 5,102, 41,194,102,137, 22, +/* 0x1920 */ 141, 85, 1,139,116, 36, 40, 78,137,116, 36, 40,117,137,138, 76, +/* 0x1930 */ 36, 48,184, 1, 0, 0, 0,211,224, 41,194, 3, 84, 36, 44,131, +/* 0x1940 */ 124, 36, 96, 3,137, 84, 36, 12, 15,143,231, 1, 0, 0,131, 68, +/* 0x1950 */ 36, 96, 7,131,250, 3,137,208,126, 5,184, 3, 0, 0, 0,139, +/* 0x1960 */ 116, 36,120,193,224, 7,199, 68, 36, 36, 6, 0, 0, 0,141,132, +/* 0x1970 */ 6, 96, 3, 0, 0,137, 68, 36, 8,184, 1, 0, 0, 0,141, 44, +/* 0x1980 */ 0,139,116, 36, 8, 1,238,129,124, 36, 72,255,255,255, 0,119, +/* 0x1990 */ 24, 59, 92, 36, 76, 15,132, 10, 2, 0, 0,193,100, 36, 72, 8, +/* 0x19a0 */ 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22, +/* 0x19b0 */ 193,232, 11, 15,183,202, 15,175,193, 57,199,115, 24,137, 68, 36, +/* 0x19c0 */ 72,184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4, 2,102,137, +/* 0x19d0 */ 6,137,232,235, 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, +/* 0x19e0 */ 5,102, 41,194,141, 69, 1,102,137, 22,139,108, 36, 36, 77,137, +/* 0x19f0 */ 108, 36, 36,117,137,141, 80,192,131,250, 3,137, 20, 36, 15,142, +/* 0x1a00 */ 39, 1, 0, 0,137,208,137,214,209,248,131,230, 1,141, 72,255, +/* 0x1a10 */ 131,206, 2,131,250, 13,137, 76, 36, 32,127, 28,139,108, 36,120, +/* 0x1a20 */ 211,230, 1,210,137, 52, 36,141, 68,117, 0, 41,208, 5, 94, 5, +/* 0x1a30 */ 0, 0,137, 68, 36, 4,235, 86,141, 80,251,129,124, 36, 72,255, +/* 0x1a40 */ 255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 86, 1, 0, 0,193, +/* 0x1a50 */ 100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,209,108, 36, +/* 0x1a60 */ 72, 1,246, 59,124, 36, 72,114, 7, 43,124, 36, 72,131,206, 1, +/* 0x1a70 */ 74,117,200,139, 68, 36,120,193,230, 4,137, 52, 36, 5, 68, 6, +/* 0x1a80 */ 0, 0,199, 68, 36, 32, 4, 0, 0, 0,137, 68, 36, 4,199, 68, +/* 0x1a90 */ 36, 28, 1, 0, 0, 0,184, 1, 0, 0, 0,139,108, 36, 4, 1, +/* 0x1aa0 */ 192,137, 68, 36, 24, 1,197,129,124, 36, 72,255,255,255, 0,119, +/* 0x1ab0 */ 24, 59, 92, 36, 76, 15,132,234, 0, 0, 0,193,100, 36, 72, 8, +/* 0x1ac0 */ 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 85, +/* 0x1ad0 */ 0,193,232, 11, 15,183,242, 15,175,198, 57,199,115, 27,137, 68, +/* 0x1ae0 */ 36, 72,184, 0, 8, 0, 0, 41,240,193,248, 5,141, 4, 2,102, +/* 0x1af0 */ 137, 69, 0,139, 68, 36, 24,235, 31, 41, 68, 36, 72, 41,199,137, +/* 0x1b00 */ 208,102,193,232, 5,102, 41,194,139, 68, 36, 24,102,137, 85, 0, +/* 0x1b10 */ 139, 84, 36, 28, 64, 9, 20, 36,139, 76, 36, 32,209,100, 36, 28, +/* 0x1b20 */ 73,137, 76, 36, 32, 15,133,112,255,255,255,139, 52, 36, 70,137, +/* 0x1b30 */ 116, 36, 92,116, 89,139, 76, 36, 12,139,108, 36,116,131,193, 2, +/* 0x1b40 */ 57,108, 36, 92,119, 95,139,132, 36,160, 0, 0, 0,137,234, 43, +/* 0x1b50 */ 68, 36, 92, 3,148, 36,160, 0, 0, 0,141, 52, 40,138, 6, 70, +/* 0x1b60 */ 136, 68, 36,115,136, 2, 66,255, 68, 36,116, 73,116, 15,139,172, +/* 0x1b70 */ 36,164, 0, 0, 0, 57,108, 36,116,114,226,235, 17,139,132, 36, +/* 0x1b80 */ 164, 0, 0, 0, 57, 68, 36,116, 15,130,187,246,255,255,129,124, +/* 0x1b90 */ 36, 72,255,255,255, 0,119, 21, 59, 92, 36, 76,184, 1, 0, 0, +/* 0x1ba0 */ 0,116, 41,235, 7,184, 1, 0, 0, 0,235, 32, 67, 43,156, 36, +/* 0x1bb0 */ 148, 0, 0, 0, 49,192,139,148, 36,156, 0, 0, 0,139, 76, 36, +/* 0x1bc0 */ 116,137, 26,139,156, 36,168, 0, 0, 0,137, 11,131,196,124, 91, +/* 0x1bd0 */ 94, 95, 93, 85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, +/* 0x1be0 */ 0,199, 68, 36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, +/* 0x1bf0 */ 36,156, 0, 0, 0,141, 66, 4,137, 68, 36,120,184, 1, 0, 0, +/* 0x1c00 */ 0, 15,182, 74, 2,137,195,211,227,137,217, 73,137, 76, 36,108, +/* 0x1c10 */ 15,182, 74, 1,211,224, 72,137, 68, 36,104,139,132, 36,168, 0, +/* 0x1c20 */ 0, 0, 15,182, 50,199, 69, 0, 0, 0, 0, 0,199, 68, 36, 96, +/* 0x1c30 */ 0, 0, 0, 0,199, 0, 0, 0, 0, 0,184, 0, 3, 0, 0,137, +/* 0x1c40 */ 116, 36,100,199, 68, 36, 92, 1, 0, 0, 0,199, 68, 36, 88, 1, +/* 0x1c50 */ 0, 0, 0,199, 68, 36, 84, 1, 0, 0, 0,199, 68, 36, 80, 1, +/* 0x1c60 */ 0, 0, 0, 15,182, 74, 1, 1,241,211,224,141,136, 54, 7, 0, +/* 0x1c70 */ 0, 57, 76, 36,116,115, 14,139, 68, 36,120,102,199, 0, 0, 4, +/* 0x1c80 */ 131,192, 2,226,246,139,156, 36,148, 0, 0, 0, 49,255,199, 68, +/* 0x1c90 */ 36, 72,255,255,255,255,137,218, 3,148, 36,152, 0, 0, 0,137, +/* 0x1ca0 */ 84, 36, 76, 49,210, 59, 92, 36, 76, 15,132,124, 9, 0, 0, 15, +/* 0x1cb0 */ 182, 3,193,231, 8, 66, 67, 9,199,131,250, 4,126,231,139,140, +/* 0x1cc0 */ 36,164, 0, 0, 0, 57, 76, 36,116, 15,131,100, 9, 0, 0,139, +/* 0x1cd0 */ 116, 36,116, 35,116, 36,108,139, 68, 36, 96,139, 84, 36,120,193, +/* 0x1ce0 */ 224, 4,137,116, 36, 68, 1,240,129,124, 36, 72,255,255,255, 0, +/* 0x1cf0 */ 141, 44, 66,119, 24, 59, 92, 36, 76, 15,132, 44, 9, 0, 0,193, +/* 0x1d00 */ 100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, +/* 0x1d10 */ 72,102,139, 85, 0,193,232, 11, 15,183,202, 15,175,193, 57,199, +/* 0x1d20 */ 15,131,221, 1, 0, 0,137, 68, 36, 72,184, 0, 8, 0, 0, 41, +/* 0x1d30 */ 200,138, 76, 36,100,193,248, 5,190, 1, 0, 0, 0,141, 4, 2, +/* 0x1d40 */ 15,182, 84, 36,115,102,137, 69, 0,139, 68, 36,116, 35, 68, 36, +/* 0x1d50 */ 104,139,108, 36,120,211,224,185, 8, 0, 0, 0, 43, 76, 36,100, +/* 0x1d60 */ 211,250, 1,208,105,192, 0, 6, 0, 0,131,124, 36, 96, 6,141, +/* 0x1d70 */ 132, 5,108, 14, 0, 0,137, 68, 36, 20, 15,142,202, 0, 0, 0, +/* 0x1d80 */ 139, 68, 36,116, 43, 68, 36, 92,139,148, 36,160, 0, 0, 0, 15, +/* 0x1d90 */ 182, 4, 2,137, 68, 36, 64,209,100, 36, 64,139, 76, 36, 64,141, +/* 0x1da0 */ 20, 54,139,108, 36, 20,129,225, 0, 1, 0, 0,129,124, 36, 72, +/* 0x1db0 */ 255,255,255, 0,141, 68, 77, 0,137, 76, 36, 60,141, 44, 16,119, +/* 0x1dc0 */ 24, 59, 92, 36, 76, 15,132, 96, 8, 0, 0,193,100, 36, 72, 8, +/* 0x1dd0 */ 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139,141, +/* 0x1de0 */ 0, 2, 0, 0,193,232, 11, 15,183,241, 15,175,198, 57,199,115, +/* 0x1df0 */ 35,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193,248, +/* 0x1e00 */ 5,131,124, 36, 60, 0,141, 4, 1,102,137,133, 0, 2, 0, 0, +/* 0x1e10 */ 116, 34,235, 46, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102, +/* 0x1e20 */ 193,232, 5,102, 41,193,131,124, 36, 60, 0,102,137,141, 0, 2, +/* 0x1e30 */ 0, 0,116, 14,129,254,255, 0, 0, 0, 15,142, 87,255,255,255, +/* 0x1e40 */ 235,121,129,254,255, 0, 0, 0,127,113,141, 20, 54,139,108, 36, +/* 0x1e50 */ 20, 1,213,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, +/* 0x1e60 */ 76, 15,132,196, 7, 0, 0,193,100, 36, 72, 8, 15,182, 3,193, +/* 0x1e70 */ 231, 8, 67, 9,199,139, 68, 36, 72,102,139, 77, 0,193,232, 11, +/* 0x1e80 */ 15,183,241, 15,175,198, 57,199,115, 25,137, 68, 36, 72,184, 0, +/* 0x1e90 */ 8, 0, 0, 41,240,137,214,193,248, 5,141, 4, 1,102,137, 69, +/* 0x1ea0 */ 0,235,159, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193, +/* 0x1eb0 */ 232, 5,102, 41,193,102,137, 77, 0,235,135,139, 84, 36,116,137, +/* 0x1ec0 */ 240,139,140, 36,160, 0, 0, 0,136, 68, 36,115,136, 4, 10, 66, +/* 0x1ed0 */ 131,124, 36, 96, 3,137, 84, 36,116,127, 13,199, 68, 36, 96, 0, +/* 0x1ee0 */ 0, 0, 0,233, 27, 7, 0, 0,131,124, 36, 96, 9,127, 10,131, +/* 0x1ef0 */ 108, 36, 96, 3,233, 10, 7, 0, 0,131,108, 36, 96, 6,233, 0, +/* 0x1f00 */ 7, 0, 0,139, 76, 36, 72, 41,199,139,116, 36, 96, 41,193,137, +/* 0x1f10 */ 208,102,193,232, 5,102, 41,194,129,249,255,255,255, 0,102,137, +/* 0x1f20 */ 85, 0,139,108, 36,120,141,116,117, 0,137,116, 36, 56,119, 22, +/* 0x1f30 */ 59, 92, 36, 76, 15,132,241, 6, 0, 0, 15,182, 3,193,231, 8, +/* 0x1f40 */ 193,225, 8, 67, 9,199,139,108, 36, 56,137,200,193,232, 11,102, +/* 0x1f50 */ 139,149,128, 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 82, +/* 0x1f60 */ 137,198,184, 0, 8, 0, 0, 41,232,139,108, 36, 88,193,248, 5, +/* 0x1f70 */ 139, 76, 36, 84,141, 4, 2,139, 84, 36, 56,137, 76, 36, 80,139, +/* 0x1f80 */ 76, 36,120,102,137,130,128, 1, 0, 0,139, 68, 36, 92,137,108, +/* 0x1f90 */ 36, 84,137, 68, 36, 88, 49,192,131,124, 36, 96, 6, 15,159,192, +/* 0x1fa0 */ 129,193,100, 6, 0, 0,141, 4, 64,137, 68, 36, 96,233,116, 2, +/* 0x1fb0 */ 0, 0,137,206, 41,199, 41,198,137,208,102,193,232, 5,139, 76, +/* 0x1fc0 */ 36, 56,102, 41,194,129,254,255,255,255, 0,102,137,145,128, 1, +/* 0x1fd0 */ 0, 0,119, 22, 59, 92, 36, 76, 15,132, 77, 6, 0, 0, 15,182, +/* 0x1fe0 */ 3,193,231, 8,193,230, 8, 67, 9,199,139,108, 36, 56,137,242, +/* 0x1ff0 */ 193,234, 11,102,139,141,152, 1, 0, 0, 15,183,193, 15,175,208, +/* 0x2000 */ 57,215, 15,131,227, 0, 0, 0,189, 0, 8, 0, 0,137,214, 41, +/* 0x2010 */ 197,199, 68, 36, 52, 0, 8, 0, 0,137,232,193,248, 5,141, 4, +/* 0x2020 */ 1,139, 76, 36, 56,102,137,129,152, 1, 0, 0,139, 68, 36, 96, +/* 0x2030 */ 139, 76, 36, 68,193,224, 5, 3, 68, 36,120,129,250,255,255,255, +/* 0x2040 */ 0,141, 44, 72,119, 22, 59, 92, 36, 76, 15,132,219, 5, 0, 0, +/* 0x2050 */ 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,102,139,149,224, +/* 0x2060 */ 1, 0, 0,137,240,193,232, 11, 15,183,202, 15,175,193, 57,199, +/* 0x2070 */ 115, 96, 41, 76, 36, 52,193,124, 36, 52, 5,139,116, 36, 52,137, +/* 0x2080 */ 68, 36, 72,131,124, 36,116, 0,141, 4, 50,102,137,133,224, 1, +/* 0x2090 */ 0, 0, 15,132,147, 5, 0, 0, 49,192,131,124, 36, 96, 6,139, +/* 0x20a0 */ 172, 36,160, 0, 0, 0,139, 84, 36,116, 15,159,192,141, 68, 0, +/* 0x20b0 */ 9,137, 68, 36, 96,139, 68, 36,116, 43, 68, 36, 92,138, 68, 5, +/* 0x20c0 */ 0,136, 68, 36,115,136, 4, 42, 66,137, 84, 36,116,233, 49, 5, +/* 0x20d0 */ 0, 0, 41,198, 41,199,137,208,102,193,232, 5,102, 41,194,102, +/* 0x20e0 */ 137,149,224, 1, 0, 0,233, 31, 1, 0, 0,137,200, 41,214,102, +/* 0x20f0 */ 193,232, 5,139,108, 36, 56,102, 41,193, 41,215,129,254,255,255, +/* 0x2100 */ 255, 0,102,137,141,152, 1, 0, 0,119, 22, 59, 92, 36, 76, 15, +/* 0x2110 */ 132, 22, 5, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9, +/* 0x2120 */ 199,139, 76, 36, 56,137,240,193,232, 11,102,139,145,176, 1, 0, +/* 0x2130 */ 0, 15,183,202, 15,175,193, 57,199,115, 35,137,198,184, 0, 8, +/* 0x2140 */ 0, 0, 41,200,139,108, 36, 56,193,248, 5,141, 4, 2,102,137, +/* 0x2150 */ 133,176, 1, 0, 0,139, 68, 36, 88,233,160, 0, 0, 0,137,241, +/* 0x2160 */ 41,199, 41,193,137,208,102,193,232, 5,102, 41,194,139, 68, 36, +/* 0x2170 */ 56,129,249,255,255,255, 0,102,137,144,176, 1, 0, 0,119, 22, +/* 0x2180 */ 59, 92, 36, 76, 15,132,161, 4, 0, 0, 15,182, 3,193,231, 8, +/* 0x2190 */ 193,225, 8, 67, 9,199,139,116, 36, 56,137,200,193,232, 11,102, +/* 0x21a0 */ 139,150,200, 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 32, +/* 0x21b0 */ 137,198,184, 0, 8, 0, 0, 41,232,139,108, 36, 56,193,248, 5, +/* 0x21c0 */ 141, 4, 2,102,137,133,200, 1, 0, 0,139, 68, 36, 84,235, 38, +/* 0x21d0 */ 137,206, 41,199, 41,198,137,208,102,193,232, 5,102, 41,194,139, +/* 0x21e0 */ 68, 36, 56,102,137,144,200, 1, 0, 0,139, 84, 36, 84,139, 68, +/* 0x21f0 */ 36, 80,137, 84, 36, 80,139, 76, 36, 88,137, 76, 36, 84,139,108, +/* 0x2200 */ 36, 92,137, 68, 36, 92,137,108, 36, 88, 49,192,131,124, 36, 96, +/* 0x2210 */ 6,139, 76, 36,120, 15,159,192,129,193,104, 10, 0, 0,141, 68, +/* 0x2220 */ 64, 8,137, 68, 36, 96,129,254,255,255,255, 0,119, 22, 59, 92, +/* 0x2230 */ 36, 76, 15,132,243, 3, 0, 0, 15,182, 3,193,231, 8,193,230, +/* 0x2240 */ 8, 67, 9,199,102,139, 17,137,240,193,232, 11, 15,183,234, 15, +/* 0x2250 */ 175,197, 57,199,115, 47,137, 68, 36, 72,184, 0, 8, 0, 0, 41, +/* 0x2260 */ 232,193,100, 36, 68, 4,193,248, 5,199, 68, 36, 44, 0, 0, 0, +/* 0x2270 */ 0,141, 4, 2,102,137, 1,139, 68, 36, 68,141, 76, 1, 4,137, +/* 0x2280 */ 76, 36, 16,235,114, 41,198, 41,199,137,208,102,193,232, 5,102, +/* 0x2290 */ 41,194,129,254,255,255,255, 0,102,137, 17,119, 22, 59, 92, 36, +/* 0x22a0 */ 76, 15,132,132, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, +/* 0x22b0 */ 67, 9,199,102,139, 81, 2,137,240,193,232, 11, 15,183,234, 15, +/* 0x22c0 */ 175,197, 57,199,115, 59,137, 68, 36, 72,184, 0, 8, 0, 0, 41, +/* 0x22d0 */ 232,193,100, 36, 68, 4,193,248, 5,199, 68, 36, 44, 8, 0, 0, +/* 0x22e0 */ 0,141, 4, 2,139, 84, 36, 68,102,137, 65, 2,141,140, 17, 4, +/* 0x22f0 */ 1, 0, 0,137, 76, 36, 16,199, 68, 36, 48, 3, 0, 0, 0,235, +/* 0x2300 */ 47, 41,198, 41,199,137,208,137,116, 36, 72,102,193,232, 5,199, +/* 0x2310 */ 68, 36, 44, 16, 0, 0, 0,102, 41,194,199, 68, 36, 48, 8, 0, +/* 0x2320 */ 0, 0,102,137, 81, 2,129,193, 4, 2, 0, 0,137, 76, 36, 16, +/* 0x2330 */ 139, 76, 36, 48,186, 1, 0, 0, 0,137, 76, 36, 40,141, 44, 18, +/* 0x2340 */ 139,116, 36, 16, 1,238,129,124, 36, 72,255,255,255, 0,119, 24, +/* 0x2350 */ 59, 92, 36, 76, 15,132,209, 2, 0, 0,193,100, 36, 72, 8, 15, +/* 0x2360 */ 182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22,193, +/* 0x2370 */ 232, 11, 15,183,202, 15,175,193, 57,199,115, 24,137, 68, 36, 72, +/* 0x2380 */ 184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4, 2,137,234,102, +/* 0x2390 */ 137, 6,235, 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5, +/* 0x23a0 */ 102, 41,194,102,137, 22,141, 85, 1,139,116, 36, 40, 78,137,116, +/* 0x23b0 */ 36, 40,117,137,138, 76, 36, 48,184, 1, 0, 0, 0,211,224, 41, +/* 0x23c0 */ 194, 3, 84, 36, 44,131,124, 36, 96, 3,137, 84, 36, 12, 15,143, +/* 0x23d0 */ 231, 1, 0, 0,131, 68, 36, 96, 7,131,250, 3,137,208,126, 5, +/* 0x23e0 */ 184, 3, 0, 0, 0,139,116, 36,120,193,224, 7,199, 68, 36, 36, +/* 0x23f0 */ 6, 0, 0, 0,141,132, 6, 96, 3, 0, 0,137, 68, 36, 8,184, +/* 0x2400 */ 1, 0, 0, 0,141, 44, 0,139,116, 36, 8, 1,238,129,124, 36, +/* 0x2410 */ 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 10, 2, 0, +/* 0x2420 */ 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, +/* 0x2430 */ 68, 36, 72,102,139, 22,193,232, 11, 15,183,202, 15,175,193, 57, +/* 0x2440 */ 199,115, 24,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193,248, +/* 0x2450 */ 5,141, 4, 2,102,137, 6,137,232,235, 21, 41, 68, 36, 72, 41, +/* 0x2460 */ 199,137,208,102,193,232, 5,102, 41,194,141, 69, 1,102,137, 22, +/* 0x2470 */ 139,108, 36, 36, 77,137,108, 36, 36,117,137,141, 80,192,131,250, +/* 0x2480 */ 3,137, 20, 36, 15,142, 39, 1, 0, 0,137,208,137,214,209,248, +/* 0x2490 */ 131,230, 1,141, 72,255,131,206, 2,131,250, 13,137, 76, 36, 32, +/* 0x24a0 */ 127, 28,139,108, 36,120,211,230, 1,210,137, 52, 36,141, 68,117, +/* 0x24b0 */ 0, 41,208, 5, 94, 5, 0, 0,137, 68, 36, 4,235, 86,141, 80, +/* 0x24c0 */ 251,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15, +/* 0x24d0 */ 132, 86, 1, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, +/* 0x24e0 */ 67, 9,199,209,108, 36, 72, 1,246, 59,124, 36, 72,114, 7, 43, +/* 0x24f0 */ 124, 36, 72,131,206, 1, 74,117,200,139, 68, 36,120,193,230, 4, +/* 0x2500 */ 137, 52, 36, 5, 68, 6, 0, 0,199, 68, 36, 32, 4, 0, 0, 0, +/* 0x2510 */ 137, 68, 36, 4,199, 68, 36, 28, 1, 0, 0, 0,184, 1, 0, 0, +/* 0x2520 */ 0,139,108, 36, 4, 1,192,137, 68, 36, 24, 1,197,129,124, 36, +/* 0x2530 */ 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132,234, 0, 0, +/* 0x2540 */ 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, +/* 0x2550 */ 68, 36, 72,102,139, 85, 0,193,232, 11, 15,183,242, 15,175,198, +/* 0x2560 */ 57,199,115, 27,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,193, +/* 0x2570 */ 248, 5,141, 4, 2,102,137, 69, 0,139, 68, 36, 24,235, 31, 41, +/* 0x2580 */ 68, 36, 72, 41,199,137,208,102,193,232, 5,102, 41,194,139, 68, +/* 0x2590 */ 36, 24,102,137, 85, 0,139, 84, 36, 28, 64, 9, 20, 36,139, 76, +/* 0x25a0 */ 36, 32,209,100, 36, 28, 73,137, 76, 36, 32, 15,133,112,255,255, +/* 0x25b0 */ 255,139, 52, 36, 70,137,116, 36, 92,116, 89,139, 76, 36, 12,139, +/* 0x25c0 */ 108, 36,116,131,193, 2, 57,108, 36, 92,119, 95,139,132, 36,160, +/* 0x25d0 */ 0, 0, 0,137,234, 43, 68, 36, 92, 3,148, 36,160, 0, 0, 0, +/* 0x25e0 */ 141, 52, 40,138, 6, 70,136, 68, 36,115,136, 2, 66,255, 68, 36, +/* 0x25f0 */ 116, 73,116, 15,139,172, 36,164, 0, 0, 0, 57,108, 36,116,114, +/* 0x2600 */ 226,235, 17,139,132, 36,164, 0, 0, 0, 57, 68, 36,116, 15,130, +/* 0x2610 */ 187,246,255,255,129,124, 36, 72,255,255,255, 0,119, 21, 59, 92, +/* 0x2620 */ 36, 76,184, 1, 0, 0, 0,116, 41,235, 7,184, 1, 0, 0, 0, +/* 0x2630 */ 235, 32, 67, 43,156, 36,148, 0, 0, 0, 49,192,139,148, 36,156, +/* 0x2640 */ 0, 0, 0,139, 76, 36,116,137, 26,139,156, 36,168, 0, 0, 0, +/* 0x2650 */ 137, 11,131,196,124, 91, 94, 95, 93, 3,115,252, 3,123,248, 49, +/* 0x2660 */ 192,141,140, 36, 0,255,255,255,137,236, 80, 57,204,117,251,137, +/* 0x2670 */ 236, 49,201, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,114, +/* 0x2680 */ 116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,114, +/* 0x2690 */ 101,108, 46,116,101,120,116, 0, 83, 89, 83, 67, 65, 76, 76, 83, +/* 0x26a0 */ 0, 69, 88, 80, 95, 72, 69, 65, 68, 0, 69, 88, 80, 95, 84, 65, +/* 0x26b0 */ 73, 76, 0, 46,114,101,108, 78, 82, 86, 50, 69, 0, 46,114,101, +/* 0x26c0 */ 108, 78, 82, 86, 50, 68, 0, 46,114,101,108, 78, 82, 86, 50, 66, +/* 0x26d0 */ 0, 46,114,101,108, 76, 90, 77, 65, 95, 68, 69, 67, 48, 48, 0, +/* 0x26e0 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 0, 76, 90, 77, 65, 95, +/* 0x26f0 */ 68, 69, 67, 49, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, +/* 0x2700 */ 0, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 0, 0, 0, 0, 0, +/* 0x2710 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2720 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2730 */ 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, +/* 0x2740 */ 0, 0, 0, 0, 52, 0, 0, 0,160, 12, 0, 0, 0, 0, 0, 0, +/* 0x2750 */ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, +/* 0x2760 */ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 45, 0, 0, +/* 0x2770 */ 240, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, +/* 0x2780 */ 8, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x2790 */ 0, 0, 0, 0,212, 12, 0, 0,192, 0, 0, 0, 0, 0, 0, 0, +/* 0x27a0 */ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, +/* 0x27b0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 13, 0, 0, +/* 0x27c0 */ 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x27d0 */ 0, 0, 0, 0, 55, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x27e0 */ 0, 0, 0, 0,133, 14, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, +/* 0x27f0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, +/* 0x2800 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 14, 0, 0, +/* 0x2810 */ 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x2820 */ 0, 0, 0, 0, 64, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, +/* 0x2830 */ 0, 0, 0, 0, 4, 46, 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, +/* 0x2840 */ 6, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 78, 0, 0, 0, +/* 0x2850 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 15, 0, 0, +/* 0x2860 */ 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x2870 */ 0, 0, 0, 0, 74, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, +/* 0x2880 */ 0, 0, 0, 0, 20, 46, 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, +/* 0x2890 */ 8, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 88, 0, 0, 0, +/* 0x28a0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 16, 0, 0, +/* 0x28b0 */ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x28c0 */ 0, 0, 0, 0, 84, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, +/* 0x28d0 */ 0, 0, 0, 0, 36, 46, 0, 0, 16, 0, 0, 0, 19, 0, 0, 0, +/* 0x28e0 */ 10, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 98, 0, 0, 0, +/* 0x28f0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 16, 0, 0, +/* 0x2900 */ 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x2910 */ 0, 0, 0, 0, 94, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, +/* 0x2920 */ 0, 0, 0, 0, 52, 46, 0, 0, 32, 0, 0, 0, 19, 0, 0, 0, +/* 0x2930 */ 12, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0,109, 0, 0, 0, +/* 0x2940 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 17, 0, 0, +/* 0x2950 */ 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x2960 */ 0, 0, 0, 0,120, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x2970 */ 0, 0, 0, 0, 77, 17, 0, 0,134, 10, 0, 0, 0, 0, 0, 0, +/* 0x2980 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,131, 0, 0, 0, +/* 0x2990 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 27, 0, 0, +/* 0x29a0 */ 134, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x29b0 */ 0, 0, 0, 0,142, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x29c0 */ 0, 0, 0, 0, 89, 38, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, +/* 0x29d0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, +/* 0x29e0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 38, 0, 0, +/* 0x29f0 */ 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x2a00 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +/* 0x2a10 */ 0, 0, 0, 0, 84, 42, 0, 0, 0, 2, 0, 0, 20, 0, 0, 0, +/* 0x2a20 */ 13, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, +/* 0x2a30 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 44, 0, 0, +/* 0x2a40 */ 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +/* 0x2a50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2a60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2a70 */ 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2a80 */ 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2a90 */ 3, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2aa0 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2ab0 */ 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2ac0 */ 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2ad0 */ 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2ae0 */ 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2af0 */ 3, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b00 */ 3, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b10 */ 3, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b20 */ 3, 0, 17, 0, 1, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b30 */ 16, 0, 4, 0, 10, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b40 */ 16, 0, 1, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b50 */ 16, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b60 */ 16, 0, 0, 0, 58, 0, 0, 0,139, 3, 0, 0,120, 1, 0, 0, +/* 0x2b70 */ 18, 0, 1, 0, 74, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b80 */ 16, 0, 3, 0, 81, 0, 0, 0,165, 0, 0, 0, 0, 0, 0, 0, +/* 0x2b90 */ 16, 0, 3, 0, 89, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, +/* 0x2ba0 */ 16, 0, 3, 0, 94, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, +/* 0x2bb0 */ 16, 0, 3, 0,100, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, +/* 0x2bc0 */ 16, 0, 1, 0,115, 0, 0, 0, 89, 6, 0, 0, 71, 0, 0, 0, +/* 0x2bd0 */ 18, 0, 1, 0,124, 0, 0, 0,123, 0, 0, 0, 0, 0, 0, 0, +/* 0x2be0 */ 16, 0, 3, 0,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2bf0 */ 16, 0, 0, 0,142, 0, 0, 0,187, 0, 0, 0, 0, 0, 0, 0, +/* 0x2c00 */ 16, 0, 3, 0,150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2c10 */ 16, 0, 0, 0,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x2c20 */ 16, 0, 3, 0,170, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, +/* 0x2c30 */ 16, 0, 3, 0,175, 0, 0, 0, 76, 11, 0, 0, 84, 1, 0, 0, +/* 0x2c40 */ 18, 0, 1, 0,184, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, +/* 0x2c50 */ 16, 0, 3, 0, 0,102, 95,101,120,112, 97,110,100, 0,103,101, +/* 0x2c60 */ 116, 95,112, 97,103,101, 95,109, 97,115,107, 0,108,122,109, 97, +/* 0x2c70 */ 95,115,116, 97, 99,107, 95, 97,100,106,117,115,116, 0,108,122, +/* 0x2c80 */ 109, 97, 95,112,114,111,112,101,114,116,105,101,115, 0,117,112, +/* 0x2c90 */ 120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 0,109,101, +/* 0x2ca0 */ 109, 99,112,121, 0,109,101,109,112, 99,112,121, 0,109,109, 97, +/* 0x2cb0 */ 112, 0,117,110, 97,109,101, 0,103,101,116, 95,117,112,120,102, +/* 0x2cc0 */ 110, 95,112, 97,116,104, 0,117,110,100,101,114,108, 97,121, 0, +/* 0x2cd0 */ 109,101,109,115,101,116, 0,108,122,109, 97, 95, 99, 95,108,101, +/* 0x2ce0 */ 110, 0,109,121, 95, 98,107,112,116, 0,108,122,109, 97, 95,117, +/* 0x2cf0 */ 95,108,101,110, 0, 80,112,114,111,116,101, 99,116, 0,115,116, +/* 0x2d00 */ 97,116, 0,117,112,120, 95,109, 97,105,110, 0,109,107,100,105, +/* 0x2d10 */ 114, 0, 0, 0, 17, 1, 0, 0, 2, 30, 0, 0, 38, 1, 0, 0, +/* 0x2d20 */ 2, 1, 0, 0, 45, 1, 0, 0, 2, 1, 0, 0, 97, 1, 0, 0, +/* 0x2d30 */ 2, 1, 0, 0,105, 1, 0, 0, 2, 1, 0, 0,155, 1, 0, 0, +/* 0x2d40 */ 2, 24, 0, 0,162, 1, 0, 0, 2, 29, 0, 0,208, 1, 0, 0, +/* 0x2d50 */ 2, 31, 0, 0,191, 2, 0, 0, 2, 19, 0, 0,195, 3, 0, 0, +/* 0x2d60 */ 2, 21, 0, 0,242, 3, 0, 0, 2, 22, 0, 0,121, 4, 0, 0, +/* 0x2d70 */ 2, 24, 0, 0,215, 4, 0, 0, 2, 20, 0, 0,112, 5, 0, 0, +/* 0x2d80 */ 2, 13, 0, 0,117, 6, 0, 0, 2, 18, 0, 0,134, 6, 0, 0, +/* 0x2d90 */ 2, 20, 0, 0,145, 6, 0, 0, 2, 18, 0, 0, 10, 7, 0, 0, +/* 0x2da0 */ 2, 14, 0, 0,235, 7, 0, 0, 2, 20, 0, 0, 80, 8, 0, 0, +/* 0x2db0 */ 2, 20, 0, 0,216, 8, 0, 0, 2, 20, 0, 0,255, 8, 0, 0, +/* 0x2dc0 */ 2, 24, 0, 0, 38, 9, 0, 0, 2, 28, 0, 0, 68, 9, 0, 0, +/* 0x2dd0 */ 2, 17, 0, 0, 22, 10, 0, 0, 2, 14, 0, 0, 62, 10, 0, 0, +/* 0x2de0 */ 2, 20, 0, 0,124, 10, 0, 0, 2, 20, 0, 0,253, 10, 0, 0, +/* 0x2df0 */ 2, 17, 0, 0, 54, 11, 0, 0, 2, 20, 0, 0,141, 11, 0, 0, +/* 0x2e00 */ 2, 14, 0, 0,199, 0, 0, 0, 2, 2, 0, 0,102, 0, 0, 0, +/* 0x2e10 */ 2, 3, 0, 0,186, 0, 0, 0, 2, 2, 0, 0,102, 0, 0, 0, +/* 0x2e20 */ 2, 3, 0, 0,167, 0, 0, 0, 2, 2, 0, 0, 84, 0, 0, 0, +/* 0x2e30 */ 2, 3, 0, 0, 5, 0, 0, 0, 1, 15, 0, 0, 20, 0, 0, 0, +/* 0x2e40 */ 1, 27, 0, 0, 30, 0, 0, 0, 1, 25, 0, 0, 42, 0, 0, 0, +/* 0x2e50 */ 1, 16, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32, +/* 0x2e60 */ 101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116, +/* 0x2e70 */ 105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, +/* 0x2e80 */ 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, +/* 0x2e90 */ 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, +/* 0x2ea0 */ 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, +/* 0x2eb0 */ 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, +/* 0x2ec0 */ 46,116,101,120,116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 99, +/* 0x2ed0 */ 97, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, +/* 0x2ee0 */ 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, +/* 0x2ef0 */ 49, 32, 83, 89, 83, 67, 65, 76, 76, 83, 32, 32, 32, 32, 32, 32, +/* 0x2f00 */ 48, 99, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 99,100, 52, 32, +/* 0x2f10 */ 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, +/* 0x2f20 */ 32, 32, 50, 32, 69, 88, 80, 95, 72, 69, 65, 68, 32, 32, 32, 32, +/* 0x2f30 */ 32, 32, 48,102, 49, 32, 32, 48, 32, 32, 48, 32, 32, 48,100, 57, +/* 0x2f40 */ 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, +/* 0x2f50 */ 83, 10, 32, 32, 51, 32, 69, 88, 80, 95, 84, 65, 73, 76, 32, 32, +/* 0x2f60 */ 32, 32, 32, 32, 48, 98, 32, 32, 48, 32, 32, 48, 32, 32, 48,101, +/* 0x2f70 */ 56, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, +/* 0x2f80 */ 84, 83, 10, 32, 32, 52, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, +/* 0x2f90 */ 32, 32, 32, 32, 32, 48,100, 50, 32, 32, 48, 32, 32, 48, 32, 32, +/* 0x2fa0 */ 48,101, 57, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, +/* 0x2fb0 */ 69, 78, 84, 83, 10, 32, 32, 53, 32, 78, 82, 86, 50, 68, 32, 32, +/* 0x2fc0 */ 32, 32, 32, 32, 32, 32, 32, 48, 99, 53, 32, 32, 48, 32, 32, 48, +/* 0x2fd0 */ 32, 32, 48,102, 54, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x2fe0 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 54, 32, 78, 82, 86, 50, 66, +/* 0x2ff0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 98, 48, 32, 32, 48, 32, +/* 0x3000 */ 32, 48, 32, 32, 48, 49, 48, 50, 55, 32, 32, 50, 42, 42, 48, 32, +/* 0x3010 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 55, 32, 76, 90, +/* 0x3020 */ 77, 65, 95, 68, 69, 67, 48, 48, 32, 32, 32, 32, 48, 50,101, 32, +/* 0x3030 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 48,100, 55, 32, 32, 50, 42, +/* 0x3040 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 56, +/* 0x3050 */ 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, +/* 0x3060 */ 52, 56, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 49, 48, 53, 32, +/* 0x3070 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, +/* 0x3080 */ 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, +/* 0x3090 */ 32, 32, 48, 97, 56, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, +/* 0x30a0 */ 49, 52,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, +/* 0x30b0 */ 78, 84, 83, 10, 32, 49, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, +/* 0x30c0 */ 50, 48, 32, 32, 32, 32, 48, 97, 56, 54, 32, 32, 48, 32, 32, 48, +/* 0x30d0 */ 32, 32, 48, 49, 98,100, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, +/* 0x30e0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 49, 32, 76, 90, 77, 65, +/* 0x30f0 */ 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 49, 97, 32, 32, 48, +/* 0x3100 */ 32, 32, 48, 32, 32, 48, 50, 54, 53, 57, 32, 32, 50, 42, 42, 48, +/* 0x3110 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, +/* 0x3120 */ 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, +/* 0x3130 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 67, 65, 76, +/* 0x3140 */ 76, 83, 32, 48, 32, 83, 89, 83, 67, 65, 76, 76, 83, 10, 48, 48, +/* 0x3150 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, +/* 0x3160 */ 88, 80, 95, 72, 69, 65, 68, 32, 48, 32, 69, 88, 80, 95, 72, 69, +/* 0x3170 */ 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x3180 */ 32,100, 32, 32, 69, 88, 80, 95, 84, 65, 73, 76, 32, 48, 32, 69, +/* 0x3190 */ 88, 80, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x31a0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 46,116,101,120,116, 32, 48, +/* 0x31b0 */ 32, 46,116,101,120,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x31c0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 32, 48, 32, +/* 0x31d0 */ 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, +/* 0x31e0 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 32, 48, 32, 78, +/* 0x31f0 */ 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, +/* 0x3200 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 32, 48, 32, 78, 82, +/* 0x3210 */ 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, +/* 0x3220 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 48, 48, 32, +/* 0x3230 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 48, 48, 10, 48, 48, 48, +/* 0x3240 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, +/* 0x3250 */ 77, 65, 95, 69, 76, 70, 48, 48, 32, 48, 32, 76, 90, 77, 65, 95, +/* 0x3260 */ 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, +/* 0x3270 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, +/* 0x3280 */ 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, +/* 0x3290 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, +/* 0x32a0 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 48, 32, 76, 90, 77, +/* 0x32b0 */ 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x32c0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, +/* 0x32d0 */ 67, 51, 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, +/* 0x32e0 */ 10, 48, 48, 48, 48, 48, 48, 53, 55, 32,103, 32, 32, 32, 32, 32, +/* 0x32f0 */ 32, 32, 69, 88, 80, 95, 72, 69, 65, 68, 32, 48, 32,102, 95,101, +/* 0x3300 */ 120,112, 97,110,100, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32,103, +/* 0x3310 */ 32, 32, 32, 32, 32, 32, 32, 46,116,101,120,116, 32, 48, 32,103, +/* 0x3320 */ 101,116, 95,112, 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, +/* 0x3330 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, +/* 0x3340 */ 78, 68, 42, 32, 48, 32,108,122,109, 97, 95,115,116, 97, 99,107, +/* 0x3350 */ 95, 97,100,106,117,115,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x3360 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, +/* 0x3370 */ 32,108,122,109, 97, 95,112,114,111,112,101,114,116,105,101,115, +/* 0x3380 */ 10, 48, 48, 48, 48, 48, 51, 56, 98, 32,103, 32, 32, 32, 32, 32, +/* 0x3390 */ 70, 32, 46,116,101,120,116, 32, 48, 49, 55, 56, 32,117,112,120, +/* 0x33a0 */ 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 10, 48, 48, 48, +/* 0x33b0 */ 48, 48, 48, 56,102, 32,103, 32, 32, 32, 32, 32, 32, 32, 83, 89, +/* 0x33c0 */ 83, 67, 65, 76, 76, 83, 32, 48, 32,109,101,109, 99,112,121, 10, +/* 0x33d0 */ 48, 48, 48, 48, 48, 48, 97, 53, 32,103, 32, 32, 32, 32, 32, 32, +/* 0x33e0 */ 32, 83, 89, 83, 67, 65, 76, 76, 83, 32, 48, 32,109,101,109,112, +/* 0x33f0 */ 99,112,121, 10, 48, 48, 48, 48, 48, 48, 50, 97, 32,103, 32, 32, +/* 0x3400 */ 32, 32, 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, 32, 48, 32, +/* 0x3410 */ 109,109, 97,112, 10, 48, 48, 48, 48, 48, 48, 53, 97, 32,103, 32, +/* 0x3420 */ 32, 32, 32, 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, 32, 48, +/* 0x3430 */ 32,117,110, 97,109,101, 10, 48, 48, 48, 48, 48, 48, 49, 49, 32, +/* 0x3440 */ 103, 32, 32, 32, 32, 32, 32, 32, 46,116,101,120,116, 32, 48, 32, +/* 0x3450 */ 103,101,116, 95,117,112,120,102,110, 95,112, 97,116,104, 10, 48, +/* 0x3460 */ 48, 48, 48, 48, 54, 53, 57, 32,103, 32, 32, 32, 32, 32, 70, 32, +/* 0x3470 */ 46,116,101,120,116, 32, 48, 52, 55, 32,117,110,100,101,114,108, +/* 0x3480 */ 97,121, 10, 48, 48, 48, 48, 48, 48, 55, 98, 32,103, 32, 32, 32, +/* 0x3490 */ 32, 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, 32, 48, 32,109, +/* 0x34a0 */ 101,109,115,101,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x34b0 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,108, +/* 0x34c0 */ 122,109, 97, 95, 99, 95,108,101,110, 10, 48, 48, 48, 48, 48, 48, +/* 0x34d0 */ 98, 98, 32,103, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 67, 65, +/* 0x34e0 */ 76, 76, 83, 32, 48, 32,109,121, 95, 98,107,112,116, 10, 48, 48, +/* 0x34f0 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, +/* 0x3500 */ 85, 78, 68, 42, 32, 48, 32,108,122,109, 97, 95,117, 95,108,101, +/* 0x3510 */ 110, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, +/* 0x3520 */ 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, 32, 48, 32, 80,112, +/* 0x3530 */ 114,111,116,101, 99,116, 10, 48, 48, 48, 48, 48, 48, 52, 56, 32, +/* 0x3540 */ 103, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, +/* 0x3550 */ 32, 48, 32,115,116, 97,116, 10, 48, 48, 48, 48, 48, 98, 52, 99, +/* 0x3560 */ 32,103, 32, 32, 32, 32, 32, 70, 32, 46,116,101,120,116, 32, 48, +/* 0x3570 */ 49, 53, 52, 32,117,112,120, 95,109, 97,105,110, 10, 48, 48, 48, +/* 0x3580 */ 48, 48, 48, 54, 57, 32,103, 32, 32, 32, 32, 32, 32, 32, 83, 89, +/* 0x3590 */ 83, 67, 65, 76, 76, 83, 32, 48, 32,109,107,100,105,114, 10, 10, +/* 0x35a0 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, +/* 0x35b0 */ 68, 83, 32, 70, 79, 82, 32, 91, 46,116,101,120,116, 93, 58, 10, +/* 0x35c0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, +/* 0x35d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, +/* 0x35e0 */ 10, 48, 48, 48, 48, 48, 49, 49, 49, 32, 82, 95, 51, 56, 54, 95, +/* 0x35f0 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95, +/* 0x3600 */ 109, 97,105,110, 10, 48, 48, 48, 48, 48, 49, 50, 54, 32, 82, 95, +/* 0x3610 */ 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x3620 */ 83, 89, 83, 67, 65, 76, 76, 83, 10, 48, 48, 48, 48, 48, 49, 50, +/* 0x3630 */ 100, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x3640 */ 32, 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, 10, 48, 48, 48, +/* 0x3650 */ 48, 48, 49, 54, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, +/* 0x3660 */ 32, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 67, 65, 76, 76, 83, +/* 0x3670 */ 10, 48, 48, 48, 48, 48, 49, 54, 57, 32, 82, 95, 51, 56, 54, 95, +/* 0x3680 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 67, +/* 0x3690 */ 65, 76, 76, 83, 10, 48, 48, 48, 48, 48, 49, 57, 98, 32, 82, 95, +/* 0x36a0 */ 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x36b0 */ 109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 49, 97, 50, 32, +/* 0x36c0 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, +/* 0x36d0 */ 32, 32,115,116, 97,116, 10, 48, 48, 48, 48, 48, 49,100, 48, 32, +/* 0x36e0 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, +/* 0x36f0 */ 32, 32,109,107,100,105,114, 10, 48, 48, 48, 48, 48, 50, 98,102, +/* 0x3700 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, +/* 0x3710 */ 32, 32, 32,109,101,109,112, 99,112,121, 10, 48, 48, 48, 48, 48, +/* 0x3720 */ 51, 99, 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, +/* 0x3730 */ 32, 32, 32, 32, 32, 32,117,110, 97,109,101, 10, 48, 48, 48, 48, +/* 0x3740 */ 48, 51,102, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, +/* 0x3750 */ 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,117,112,120,102,110, +/* 0x3760 */ 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 52, 55, 57, 32, 82, +/* 0x3770 */ 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, +/* 0x3780 */ 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 52,100, 55, +/* 0x3790 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, +/* 0x37a0 */ 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 53, 55, 48, +/* 0x37b0 */ 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, +/* 0x37c0 */ 32, 32, 32,102, 95,101,120,112, 97,110,100, 10, 48, 48, 48, 48, +/* 0x37d0 */ 48, 54, 55, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, +/* 0x37e0 */ 32, 32, 32, 32, 32, 32, 32,109,101,109, 99,112,121, 10, 48, 48, +/* 0x37f0 */ 48, 48, 48, 54, 56, 54, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, +/* 0x3800 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, +/* 0x3810 */ 48, 48, 48, 54, 57, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, +/* 0x3820 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109, 99,112,121, 10, +/* 0x3830 */ 48, 48, 48, 48, 48, 55, 48, 97, 32, 82, 95, 51, 56, 54, 95, 80, +/* 0x3840 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, +/* 0x3850 */ 97,103,101, 95,109, 97,115,107, 10, 48, 48, 48, 48, 48, 55,101, +/* 0x3860 */ 98, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x3870 */ 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 56, 53, +/* 0x3880 */ 48, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x3890 */ 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 56,100, +/* 0x38a0 */ 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x38b0 */ 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, 48, 48, 48, 56,102, +/* 0x38c0 */ 102, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x38d0 */ 32, 32, 32, 32,109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, +/* 0x38e0 */ 57, 50, 54, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, +/* 0x38f0 */ 32, 32, 32, 32, 32, 32, 80,112,114,111,116,101, 99,116, 10, 48, +/* 0x3900 */ 48, 48, 48, 48, 57, 52, 52, 32, 82, 95, 51, 56, 54, 95, 80, 67, +/* 0x3910 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112,120, 95,109,109, +/* 0x3920 */ 97,112, 95, 97,110,100, 95,102,100, 10, 48, 48, 48, 48, 48, 97, +/* 0x3930 */ 49, 54, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, +/* 0x3940 */ 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103,101, 95,109, 97, +/* 0x3950 */ 115,107, 10, 48, 48, 48, 48, 48, 97, 51,101, 32, 82, 95, 51, 56, +/* 0x3960 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,109, +/* 0x3970 */ 97,112, 10, 48, 48, 48, 48, 48, 97, 55, 99, 32, 82, 95, 51, 56, +/* 0x3980 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,109, +/* 0x3990 */ 97,112, 10, 48, 48, 48, 48, 48, 97,102,100, 32, 82, 95, 51, 56, +/* 0x39a0 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,112, +/* 0x39b0 */ 120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, 10, 48, 48, +/* 0x39c0 */ 48, 48, 48, 98, 51, 54, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, +/* 0x39d0 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, 48, 48, +/* 0x39e0 */ 48, 48, 48, 98, 56,100, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, +/* 0x39f0 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116, 95,112, 97,103, +/* 0x3a00 */ 101, 95,109, 97,115,107, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, +/* 0x3a10 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, +/* 0x3a20 */ 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, +/* 0x3a30 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x3a40 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 99, +/* 0x3a50 */ 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x3a60 */ 32, 32, 32, 32, 69, 88, 80, 95, 72, 69, 65, 68, 10, 48, 48, 48, +/* 0x3a70 */ 48, 48, 48, 54, 54, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, +/* 0x3a80 */ 32, 32, 32, 32, 32, 32, 32, 32, 69, 88, 80, 95, 84, 65, 73, 76, +/* 0x3a90 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, +/* 0x3aa0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, +/* 0x3ab0 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, +/* 0x3ac0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, +/* 0x3ad0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 97, 32, 82, 95, 51, 56, +/* 0x3ae0 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 88, +/* 0x3af0 */ 80, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 54, 54, 32, +/* 0x3b00 */ 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, +/* 0x3b10 */ 32, 32, 69, 88, 80, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, +/* 0x3b20 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, +/* 0x3b30 */ 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, +/* 0x3b40 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, +/* 0x3b50 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, +/* 0x3b60 */ 48, 48, 48, 97, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, +/* 0x3b70 */ 32, 32, 32, 32, 32, 32, 32, 32, 69, 88, 80, 95, 72, 69, 65, 68, +/* 0x3b80 */ 10, 48, 48, 48, 48, 48, 48, 53, 52, 32, 82, 95, 51, 56, 54, 95, +/* 0x3b90 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 88, 80, 95, +/* 0x3ba0 */ 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, +/* 0x3bb0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, +/* 0x3bc0 */ 77, 65, 95, 68, 69, 67, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, +/* 0x3bd0 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x3be0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, +/* 0x3bf0 */ 48, 48, 48, 53, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, +/* 0x3c00 */ 32, 32, 32, 32, 32, 32, 32,108,122,109, 97, 95,115,116, 97, 99, +/* 0x3c10 */ 107, 95, 97,100,106,117,115,116, 10, 48, 48, 48, 48, 48, 48, 49, +/* 0x3c20 */ 52, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, +/* 0x3c30 */ 32, 32, 32, 32,108,122,109, 97, 95,117, 95,108,101,110, 10, 48, +/* 0x3c40 */ 48, 48, 48, 48, 48, 49,101, 32, 82, 95, 51, 56, 54, 95, 51, 50, +/* 0x3c50 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,122,109, 97, 95, 99, +/* 0x3c60 */ 95,108,101,110, 10, 48, 48, 48, 48, 48, 48, 50, 97, 32, 82, 95, +/* 0x3c70 */ 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x3c80 */ 108,122,109, 97, 95,112,114,111,112,101,114,116,105,101,115, 10 }; diff --git a/src/stub/i386-linux.elf-so_entry.h b/src/stub/i386-linux.elf-so_entry.h index 9a2a468d..ca2baf4c 100644 --- a/src/stub/i386-linux.elf-so_entry.h +++ b/src/stub/i386-linux.elf-so_entry.h @@ -1,5 +1,5 @@ /* i386-linux.elf-so_entry.h - created from i386-linux.elf-so_entry.bin, 1295 (0x50f) bytes + created from i386-linux.elf-so_entry.bin, 3001 (0xbb9) bytes This file is part of the UPX executable compressor. @@ -32,14 +32,14 @@ /* clang-format off */ -#define STUB_I386_LINUX_ELF_SO_ENTRY_SIZE 1295 -#define STUB_I386_LINUX_ELF_SO_ENTRY_ADLER32 0x9b5a12ef -#define STUB_I386_LINUX_ELF_SO_ENTRY_CRC32 0xae0c7724 +#define STUB_I386_LINUX_ELF_SO_ENTRY_SIZE 3001 +#define STUB_I386_LINUX_ELF_SO_ENTRY_ADLER32 0x202c422f +#define STUB_I386_LINUX_ELF_SO_ENTRY_CRC32 0xe8c600b0 -unsigned char stub_i386_linux_elf_so_entry[1295] = { +unsigned char stub_i386_linux_elf_so_entry[3001] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0020 */ 96, 1, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, +/* 0x0020 */ 224, 4, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x0030 */ 8, 0, 5, 0,144, 96,232,252,255,255,255, 1,219,116, 2,243, /* 0x0040 */ 195,139, 30,131,238,252, 17,219,195, 94,102,131,126, 8, 2,116, /* 0x0050 */ 1,244,141, 74,233, 81,139, 6, 80,137,229, 41,196,131,228,248, @@ -55,67 +55,174 @@ unsigned char stub_i386_linux_elf_so_entry[1295] = { /* 0x00f0 */ 106, 5,255,116, 36, 16,106, 0,137,227,106, 90, 88,205,128,131, /* 0x0100 */ 196, 24, 80,137,251,106, 6, 88,205,128, 88, 80,255,224,141, 92, /* 0x0110 */ 36, 4,106, 90, 88,205,128, 61, 0,240,255,255,114, 1,244,194, -/* 0x0120 */ 24, 0, 90,232, 17, 0, 0, 0, 0, 46,115,121,109,116, 97, 98, -/* 0x0130 */ 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114,116, -/* 0x0140 */ 97, 98, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, 0, -/* 0x0150 */ 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, -/* 0x0160 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0170 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0180 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, -/* 0x0190 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,238, 0, 0, 0, -/* 0x01a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -/* 0x01b0 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x01c0 */ 232, 2, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, -/* 0x01d0 */ 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, -/* 0x01e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 6, 0, 0, 0, -/* 0x01f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -/* 0x0200 */ 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0210 */ 240, 2, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, -/* 0x0220 */ 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, -/* 0x0230 */ 0, 0, 0, 0, 0, 0, 0, 0, 40, 1, 0, 0, 53, 0, 0, 0, -/* 0x0240 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -/* 0x0250 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0260 */ 160, 2, 0, 0, 64, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, -/* 0x0270 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, -/* 0x0280 */ 0, 0, 0, 0, 0, 0, 0, 0,224, 2, 0, 0, 8, 0, 0, 0, -/* 0x0290 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -/* 0x02a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x02b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, -/* 0x02c0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -/* 0x02d0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, -/* 0x02e0 */ 0, 95,115,116, 97,114,116, 0, 3, 0, 0, 0, 2, 3, 0, 0, -/* 0x02f0 */ 2, 0, 0, 0, 2, 1, 0, 0,102,105,108,101, 32,102,111,114, -/* 0x0300 */ 109, 97,116, 32,101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, -/* 0x0310 */ 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97, -/* 0x0320 */ 109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, -/* 0x0330 */ 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, -/* 0x0340 */ 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111, -/* 0x0350 */ 102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, -/* 0x0360 */ 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, -/* 0x0370 */ 32, 32, 48,101,101, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 52, -/* 0x0380 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x0390 */ 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, -/* 0x03a0 */ 32, 32, 32, 48, 54, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 50, -/* 0x03b0 */ 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x03c0 */ 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, -/* 0x03d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x03e0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, -/* 0x03f0 */ 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x0400 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, -/* 0x0410 */ 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x0420 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, -/* 0x0430 */ 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, -/* 0x0440 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x0450 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, -/* 0x0460 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, -/* 0x0470 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, -/* 0x0480 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 51, 56, 54, -/* 0x0490 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, -/* 0x04a0 */ 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x04b0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, -/* 0x04c0 */ 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x04d0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x04e0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x04f0 */ 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, -/* 0x0500 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10 +/* 0x0120 */ 24, 0, 0, 0, 85,137,229, 86, 83,131,236, 64,139,117, 8,106, +/* 0x0130 */ 64,104,255, 0, 0, 0,141, 93,184, 83,232,252,255,255,255, 83, +/* 0x0140 */ 86,232,252,255,255,255,137,194,131,196, 20,133,192,120, 21, 15, +/* 0x0150 */ 183, 69,192, 37, 0,240, 0, 0,185, 0, 0, 0, 0, 61, 0, 64, +/* 0x0160 */ 0, 0,116, 23,131,250,254,117, 16,104,192, 1, 0, 0, 86,232, +/* 0x0170 */ 252,255,255,255,137,194,131,196, 8,137,209,137,200,141,101,248, +/* 0x0180 */ 91, 94,201,195,139, 68, 36, 4,137,194,131,226, 31,131,224, 63, +/* 0x0190 */ 131,250, 26,118, 12,168, 32,116, 5,131,232, 70,235, 3,131,232, +/* 0x01a0 */ 43,131,192, 64,195, 85,137,229, 87, 86, 83,131,236, 20,232, 12, +/* 0x01b0 */ 0, 0, 0, 47,100, 97,116, 97, 47,100, 97,116, 97, 47, 0, 90, +/* 0x01c0 */ 139, 2,139, 77, 8,137, 1,139, 66, 4,137, 65, 4,102,139, 66, +/* 0x01d0 */ 8,102,137, 65, 8,138, 66, 10,136, 65, 10,198, 65, 11, 0, 81, +/* 0x01e0 */ 232, 63,255,255,255,131,196, 4,232, 19, 0, 0, 0, 47,112,114, +/* 0x01f0 */ 111, 99, 47,115,101,108,102, 47, 99,109,100,108,105,110,101, 0, +/* 0x0200 */ 94,185, 0, 0, 0, 0,137,243,137,202,106, 5, 88,205,128,137, +/* 0x0210 */ 69,232,139,117, 12,186,255, 15, 0, 0,137,195,137,241,106, 3, +/* 0x0220 */ 88,205,128,137,199,139, 93,232,106, 6, 88,205,128,137,248,133, +/* 0x0230 */ 255, 15,136,178, 0, 0, 0,198, 4, 62, 0,128, 62, 0,116, 6, +/* 0x0240 */ 70,128, 62, 0,117,250,137,240,128, 62, 47,116, 6, 78,128, 62, +/* 0x0250 */ 47,117,250, 41,240, 80, 86,139, 69, 8,131,192, 10, 80,232,252, +/* 0x0260 */ 255,255,255,137,195,198, 0, 0,255,117, 8,232,180,254,255,255, +/* 0x0270 */ 131,196, 16,232, 7, 0, 0, 0, 47, 99, 97, 99,104,101, 0, 90, +/* 0x0280 */ 139, 2,137, 3,102,139, 66, 4,102,137, 67, 4,131,195, 6,198, +/* 0x0290 */ 3, 0,255,117, 8,232,138,254,255,255,232, 5, 0, 0, 0, 47, +/* 0x02a0 */ 117,112,120, 0, 88,139, 0,137, 3,141,115, 4,106, 20, 88,205, +/* 0x02b0 */ 128,137,195,137, 4, 36,232,201,254,255,255,136, 6,137,216,193, +/* 0x02c0 */ 232, 6,137, 4, 36,232,186,254,255,255,136, 70, 1,137,216,193, +/* 0x02d0 */ 232, 12,137, 4, 36,232,170,254,255,255,131,196, 4,136, 70, 2, +/* 0x02e0 */ 198, 70, 3, 0,184, 0, 0, 0, 0,141,101,244, 91, 94, 95,201, +/* 0x02f0 */ 195, 86, 83,139,116, 36, 12,139, 92, 36, 16,139, 76, 36, 20, 73, +/* 0x0300 */ 131,249,255,116, 30,138, 22,131,202, 32, 15,190,210,138, 3,131, +/* 0x0310 */ 200, 32, 15,190,192, 67, 70, 41,194,137,208,117, 11, 73,131,249, +/* 0x0320 */ 255,117,226,184, 0, 0, 0, 0, 91, 94,195, 85,137,229, 87, 86, +/* 0x0330 */ 83,129,236, 44, 16, 0, 0,232, 4, 0, 0, 0,117,112,120, 0, +/* 0x0340 */ 91,185, 16, 0, 0, 0,186,100, 1, 0, 0,137,208,205,128,137, +/* 0x0350 */ 198,141, 68, 36, 15,131,224,240,137, 69,240,199, 0, 0, 0, 0, +/* 0x0360 */ 0, 80,232,252,255,255,255,232, 5, 0, 0, 0, 97,110,100,114, +/* 0x0370 */ 0, 88,199, 4, 36, 4, 0, 0, 0,255,117,240, 80,232,111,255, +/* 0x0380 */ 255,255,137,199,131,196, 12,133,192,117, 99,131,125, 16, 0,117, +/* 0x0390 */ 8,232,252,255,255,255,137, 69, 16,133,255,117, 81,131,254,218, +/* 0x03a0 */ 117, 76,131,125, 16, 0,116, 70,139, 85, 16,128, 58, 0,117, 22, +/* 0x03b0 */ 255,117,240, 82,232,236,253,255,255,131,196, 8,137,193,133,192, +/* 0x03c0 */ 15,136,211, 0, 0, 0,185,194, 0, 0, 0,190,192, 1, 0, 0, +/* 0x03d0 */ 139, 93, 16,137,242,106, 5, 88,205,128,137,198,137,193,133,192, +/* 0x03e0 */ 15,136,179, 0, 0, 0,139, 93, 16,106, 10, 88,205,128,131,125, +/* 0x03f0 */ 12, 0,116,106,133,255,116, 22,137,243,139, 77, 12,106, 93, 88, +/* 0x0400 */ 205,128,137,193,133,192, 15,136,141, 0, 0, 0,235, 80,104, 0, +/* 0x0410 */ 16, 0, 0,106, 0,255,117,240,232,252,255,255,255,139,125, 12, +/* 0x0420 */ 131,196, 12,133,255,116, 41,137,125,216,129,255, 0, 16, 0, 0, +/* 0x0430 */ 118, 7,199, 69,216, 0, 16, 0, 0,137,243,139, 77,240,139, 85, +/* 0x0440 */ 216,106, 4, 88,205,128, 59, 69,216,117, 64, 43,125,216,117,215, +/* 0x0450 */ 185, 0, 0, 0, 0,137,243,137,202,106, 19, 88,205,128,106, 0, +/* 0x0460 */ 86,131,125, 8, 1, 25,192,131,224,240,131,192, 17, 80,106, 3, +/* 0x0470 */ 255,117, 12,255,117, 8,232,252,255,255,255,137,194,131,196, 24, +/* 0x0480 */ 137,193, 61, 0,240,255,255,119, 16,235, 7,185,228,255,255,255, +/* 0x0490 */ 235, 7,141, 70, 1,137,193, 9,209,137,200,141,101,244, 91, 94, +/* 0x04a0 */ 95,201,195, 90,232, 17, 0, 0, 0, 0, 46,115,121,109,116, 97, +/* 0x04b0 */ 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114, +/* 0x04c0 */ 116, 97, 98, 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 88, +/* 0x04d0 */ 0, 46,114,101,108, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, +/* 0x04e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x04f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0500 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, +/* 0x0510 */ 6, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,111, 4, 0, 0, +/* 0x0520 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, +/* 0x0530 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0540 */ 44, 7, 0, 0, 72, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, +/* 0x0550 */ 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, +/* 0x0560 */ 0, 0, 0, 0, 0, 0, 0, 0,163, 4, 0, 0, 6, 0, 0, 0, +/* 0x0570 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x0580 */ 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0590 */ 116, 7, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 3, 0, 0, 0, +/* 0x05a0 */ 4, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, +/* 0x05b0 */ 0, 0, 0, 0, 0, 0, 0, 0,169, 4, 0, 0, 53, 0, 0, 0, +/* 0x05c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x05d0 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x05e0 */ 32, 6, 0, 0,192, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, +/* 0x05f0 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, +/* 0x0600 */ 0, 0, 0, 0, 0, 0, 0, 0,224, 6, 0, 0, 76, 0, 0, 0, +/* 0x0610 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +/* 0x0620 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0630 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, +/* 0x0640 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, +/* 0x0650 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, +/* 0x0660 */ 8, 0, 0, 0,247, 2, 0, 0,120, 1, 0, 0, 18, 0, 1, 0, +/* 0x0670 */ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x0680 */ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x0690 */ 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x06a0 */ 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x06b0 */ 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x06c0 */ 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x06d0 */ 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, +/* 0x06e0 */ 0, 95,115,116, 97,114,116, 0,117,112,120, 95,109,109, 97,112, +/* 0x06f0 */ 95, 97,110,100, 95,102,100, 0,109,101,109,112, 99,112,121, 0, +/* 0x0700 */ 109,109, 97,112, 0,117,110, 97,109,101, 0,103,101,116, 95,117, +/* 0x0710 */ 112,120,102,110, 95,112, 97,116,104, 0,109,101,109,115,101,116, +/* 0x0720 */ 0,115,116, 97,116, 0,109,107,100,105,114, 0, 3, 0, 0, 0, +/* 0x0730 */ 2, 2, 0, 0, 7, 1, 0, 0, 2, 9, 0, 0, 14, 1, 0, 0, +/* 0x0740 */ 2, 10, 0, 0, 60, 1, 0, 0, 2, 11, 0, 0, 43, 2, 0, 0, +/* 0x0750 */ 2, 5, 0, 0, 47, 3, 0, 0, 2, 7, 0, 0, 94, 3, 0, 0, +/* 0x0760 */ 2, 8, 0, 0,229, 3, 0, 0, 2, 9, 0, 0, 67, 4, 0, 0, +/* 0x0770 */ 2, 6, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0,102,105,108,101, +/* 0x0780 */ 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45,105, 51, +/* 0x0790 */ 56, 54, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100, +/* 0x07a0 */ 120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x07b0 */ 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, +/* 0x07c0 */ 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105, +/* 0x07d0 */ 108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, +/* 0x07e0 */ 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, +/* 0x07f0 */ 32, 32, 32, 32, 32, 32, 48, 52, 54,102, 32, 32, 48, 32, 32, 48, +/* 0x0800 */ 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, +/* 0x0810 */ 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 69, 76, 70, 77, 65, 73, +/* 0x0820 */ 78, 90, 32, 32, 32, 32, 32, 32, 48, 54, 32, 32, 48, 32, 32, 48, +/* 0x0830 */ 32, 32, 48, 52, 97, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x0840 */ 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, +/* 0x0850 */ 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, +/* 0x0860 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, +/* 0x0870 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, +/* 0x0880 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, +/* 0x0890 */ 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, +/* 0x08a0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, +/* 0x08b0 */ 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114, +/* 0x08c0 */ 116, 10, 48, 48, 48, 48, 48, 50,102, 55, 32,103, 32, 32, 32, 32, +/* 0x08d0 */ 32, 70, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 49, 55, 56, +/* 0x08e0 */ 32,117,112,120, 95,109,109, 97,112, 95, 97,110,100, 95,102,100, +/* 0x08f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, +/* 0x0900 */ 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,101,109,112, 99,112, +/* 0x0910 */ 121, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, +/* 0x0920 */ 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,109, 97,112, 10, +/* 0x0930 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x0940 */ 32, 42, 85, 78, 68, 42, 32, 48, 32,117,110, 97,109,101, 10, 48, +/* 0x0950 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x0960 */ 42, 85, 78, 68, 42, 32, 48, 32,103,101,116, 95,117,112,120,102, +/* 0x0970 */ 110, 95,112, 97,116,104, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x0980 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, +/* 0x0990 */ 109,101,109,115,101,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x09a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, +/* 0x09b0 */ 115,116, 97,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, +/* 0x09c0 */ 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32,109,107, +/* 0x09d0 */ 100,105,114, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, +/* 0x09e0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, +/* 0x09f0 */ 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, +/* 0x0a00 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x0a10 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, +/* 0x0a20 */ 51, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, +/* 0x0a30 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, +/* 0x0a40 */ 48, 48, 49, 48, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, 50, +/* 0x0a50 */ 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,115,101,116, 10, 48, +/* 0x0a60 */ 48, 48, 48, 48, 49, 48,101, 32, 82, 95, 51, 56, 54, 95, 80, 67, +/* 0x0a70 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,116, 10, 48, +/* 0x0a80 */ 48, 48, 48, 48, 49, 51, 99, 32, 82, 95, 51, 56, 54, 95, 80, 67, +/* 0x0a90 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,107,100,105,114, 10, +/* 0x0aa0 */ 48, 48, 48, 48, 48, 50, 50, 98, 32, 82, 95, 51, 56, 54, 95, 80, +/* 0x0ab0 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,112, 99, +/* 0x0ac0 */ 112,121, 10, 48, 48, 48, 48, 48, 51, 50,102, 32, 82, 95, 51, 56, +/* 0x0ad0 */ 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,117,110, +/* 0x0ae0 */ 97,109,101, 10, 48, 48, 48, 48, 48, 51, 53,101, 32, 82, 95, 51, +/* 0x0af0 */ 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,103, +/* 0x0b00 */ 101,116, 95,117,112,120,102,110, 95,112, 97,116,104, 10, 48, 48, +/* 0x0b10 */ 48, 48, 48, 51,101, 53, 32, 82, 95, 51, 56, 54, 95, 80, 67, 51, +/* 0x0b20 */ 50, 32, 32, 32, 32, 32, 32, 32, 32,109,101,109,115,101,116, 10, +/* 0x0b30 */ 48, 48, 48, 48, 48, 52, 52, 51, 32, 82, 95, 51, 56, 54, 95, 80, +/* 0x0b40 */ 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32,109,109, 97,112, 10, +/* 0x0b50 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, +/* 0x0b60 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, +/* 0x0b70 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, +/* 0x0b80 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, +/* 0x0b90 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, +/* 0x0ba0 */ 51, 56, 54, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x0bb0 */ 69, 76, 70, 77, 65, 73, 78, 88, 10 }; diff --git a/src/stub/i386-linux.elf.execve-fold.h b/src/stub/i386-linux.elf.execve-fold.h index 1cc141fe..33252ecc 100644 --- a/src/stub/i386-linux.elf.execve-fold.h +++ b/src/stub/i386-linux.elf.execve-fold.h @@ -1,5 +1,5 @@ /* i386-linux.elf.execve-fold.h - created from i386-linux.elf.execve-fold.bin, 1095 (0x447) bytes + created from i386-linux.elf.execve-fold.bin, 1135 (0x46f) bytes This file is part of the UPX executable compressor. @@ -32,78 +32,80 @@ /* clang-format off */ -#define STUB_I386_LINUX_ELF_EXECVE_FOLD_SIZE 1095 -#define STUB_I386_LINUX_ELF_EXECVE_FOLD_ADLER32 0xd19cb5b7 -#define STUB_I386_LINUX_ELF_EXECVE_FOLD_CRC32 0xc7a67867 +#define STUB_I386_LINUX_ELF_EXECVE_FOLD_SIZE 1135 +#define STUB_I386_LINUX_ELF_EXECVE_FOLD_ADLER32 0xdc72c842 +#define STUB_I386_LINUX_ELF_EXECVE_FOLD_CRC32 0xf94d4195 -unsigned char stub_i386_linux_elf_execve_fold[1095] = { +unsigned char stub_i386_linux_elf_execve_fold[1135] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 64, 0, -/* 0x0040 */ 0, 16, 64, 0, 71, 4, 0, 0, 72, 4, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 71, 4, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 16, 64, 0,111, 4, 0, 0,112, 4, 0, 0, 5, 0, 0, 0, +/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,111, 4, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 88,137,225,141, 84,132, 4,139,123, 24,141,179,128, 0, 0, 0, -/* 0x0090 */ 41,247,141, 93, 2, 96,232, 39, 1, 0, 0,244, 83,141, 92, 36, +/* 0x0090 */ 41,247,141, 93, 2, 96,232, 43, 1, 0, 0,244, 83,141, 92, 36, /* 0x00a0 */ 8,106, 90, 88,205,128, 91,195, 83,137,195,139, 76, 36, 8,136, /* 0x00b0 */ 208,131,224, 31, 60, 25,118, 3,131,232, 43,131,192, 65, 75,136, /* 0x00c0 */ 3,137,208,193,232, 5,137,194,226,229, 91,195, 85,137,229, 87, -/* 0x00d0 */ 86, 49,255, 83,137,249,131,236, 96,137,250,139, 93, 8,106, 5, -/* 0x00e0 */ 88,205,128,133,192,137,198, 15,136,199, 0, 0, 0,199, 69,212, -/* 0x00f0 */ 47,112,114,111,199, 69,216, 99, 47, 0, 0,106, 20, 88,205,128, -/* 0x0100 */ 141, 85,218,141, 93,212,232, 25, 3, 0, 0,141, 80, 4,199, 0, -/* 0x0110 */ 47,102,100, 47,137,240,232, 9, 3, 0, 0,186, 1, 0, 0, 0, -/* 0x0120 */ 106, 33, 88,106, 5, 89,205,128, 61, 85, 80, 88, 50,117,126,139, -/* 0x0130 */ 93, 8,106, 10, 88,205,128,185, 2, 0, 0, 0,137,243,106, 55, -/* 0x0140 */ 88,205,128,141, 93,212,139, 77, 12,139, 85, 16,106, 11, 88,205, -/* 0x0150 */ 128,186, 2, 0, 0, 0,137,243,137,249,106, 19, 88,205,128,106, -/* 0x0160 */ 0,137,199, 86,106, 2,106, 3, 80,106, 0,232, 44,255,255,255, -/* 0x0170 */ 131,196, 24,137, 69,152,185,193, 0, 0, 0,186,192, 1, 0, 0, -/* 0x0180 */ 139, 93, 8,106, 5, 88,205,128,137, 69,148,137,195,139, 77,152, -/* 0x0190 */ 137,250,106, 4, 88,205,128, 57,199,116, 10,106,127, 91,106, 1, -/* 0x01a0 */ 88,205,128,235,254,139, 93,148,106, 6, 88,205,128,137,243,106, -/* 0x01b0 */ 6, 88,205,128,141,101,244,137,240, 91, 94, 95,201,194, 12, 0, -/* 0x01c0 */ 204,195, 85,137,229, 87, 86, 83,131,236,124,141,125,228,139, 69, -/* 0x01d0 */ 16,139,117, 12,137, 69,156,165,165,165,131,109, 8, 12,129,125, -/* 0x01e0 */ 228, 85, 80, 88, 51,137,117, 12,116, 4,106, 11,235,107,199, 69, -/* 0x01f0 */ 196, 47,116,109,112,199, 69,200, 47,117,112,120,141, 77,215,106, -/* 0x0200 */ 20, 88,205,128,137,194,106, 4,137,200,141,125,211,232,150,254, -/* 0x0210 */ 255,255,139, 85,228,198, 69,215, 0, 49,201, 49,208,141, 93,172, -/* 0x0220 */ 137, 69,132,106, 78, 88,205,128,139, 85,172,137,248, 49, 85,132, -/* 0x0230 */ 139, 85,176,199, 4, 36, 7, 0, 0, 0,141, 93,196,193,226, 12, -/* 0x0240 */ 51, 85,132,232, 96,254,255,255, 89,106, 10, 88,205,128,131,248, -/* 0x0250 */ 254,116, 17,133,192,116, 13,106, 12,232, 98,255,255,255, 90,233, -/* 0x0260 */ 43, 1, 0, 0,185,194, 0, 0, 0,186,192, 1, 0, 0,141, 93, -/* 0x0270 */ 196,106, 5, 88,205,128,139, 85,232,137, 69,148,137,195,137,209, -/* 0x0280 */ 106, 93, 88,205,128,133,192,116, 7,106, 14,233,137, 1, 0, 0, -/* 0x0290 */ 106, 0,255,117,148,106, 1,141,130, 0, 16, 0, 0,106, 3, 80, -/* 0x02a0 */ 106, 0,232,245,253,255,255,131,196, 24, 61, 0,240,255,255,137, -/* 0x02b0 */ 69,136,118, 7,106, 15,233, 94, 1, 0, 0,139, 69,232,106, 0, -/* 0x02c0 */ 106,255, 5,255, 15, 0, 0,106, 50, 37, 0,240,255,255,106, 3, -/* 0x02d0 */ 3, 69,136,104, 0, 16, 0, 0, 80,232,190,253,255,255,131,196, -/* 0x02e0 */ 24,141,125,180,139,117, 12,165,165,165,139, 77,180,131,109, 8, -/* 0x02f0 */ 12,133,201,137,117, 12,139, 85,184,117, 32,129,250, 85, 80, 88, -/* 0x0300 */ 33,116, 7,106, 17,233, 15, 1, 0, 0,131,125,232, 0, 15,132, -/* 0x0310 */ 133, 0, 0, 0,106, 18,233,254, 0, 0, 0, 57,202,119, 5, 59, -/* 0x0320 */ 85,236,118, 7,106, 19,233,238, 0, 0, 0, 57,202,115, 42,141, -/* 0x0330 */ 69,168,255,117,188, 80,255,117,136, 82,255,117, 12,137, 77,168, -/* 0x0340 */ 255, 85,156,131,196, 20,133,192,117, 8,139, 69,180, 57, 69,168, -/* 0x0350 */ 116, 15,106, 20,233,192, 0, 0, 0,139,125,136,139,117, 12,243, -/* 0x0360 */ 164,139, 85,180,139, 93,136,137,209,106, 91, 88,205,128,139, 69, -/* 0x0370 */ 184, 41, 69, 8, 1, 85,136, 41, 85,232, 1, 69, 12,131,125, 8, -/* 0x0380 */ 0, 15,137, 90,255,255,255,141, 93,196,106, 10, 88,205,128,106, -/* 0x0390 */ 127, 91,106, 1, 88,205,128,235,254,139, 93,148,106, 6, 88,205, -/* 0x03a0 */ 128,133,192,116, 4,106, 22,235,112,255,117, 28,255,117, 32,141, -/* 0x03b0 */ 117,196, 86,232, 20,253,255,255,133,192,121, 4,106, 23,235, 89, -/* 0x03c0 */ 106, 2, 88,205,128,133,192,117, 52,106, 2, 88,205,128,133,192, -/* 0x03d0 */ 137,193,117, 32,199, 69,160, 85, 80, 88, 52,184,162, 0, 0, 0, -/* 0x03e0 */ 141, 93,160,199, 69,164, 0, 0, 0, 0,205,128,141, 93,196,106, -/* 0x03f0 */ 10, 88,205,128, 49,219,106, 1, 88,205,128,235,254, 49,201,131, -/* 0x0400 */ 203,255,137,202,106, 7, 88,205,128,141, 93,196,139, 77, 32,139, -/* 0x0410 */ 85, 28,106, 11, 88,205,128,106, 24,232,162,253,255,255, 88,233, -/* 0x0420 */ 99,255,255,255, 87,137,215,106, 10,252, 89,232, 5, 0, 0, 0, -/* 0x0430 */ 136, 39,151, 95,195,153,247,241, 82,133,192,116, 5,232,243,255, -/* 0x0440 */ 255,255, 88, 4, 48,170,195 +/* 0x00d0 */ 86,191, 0, 0, 0, 0, 83,137,249,131,236, 96,137,250,139, 93, +/* 0x00e0 */ 8,106, 5, 88,205,128,133,192,137,198,120, 73,199, 69,212, 47, +/* 0x00f0 */ 112,114,111,199, 69,216, 99, 47, 0, 0,106, 20, 88,205,128,141, +/* 0x0100 */ 85,218,141, 93,212,232, 66, 3, 0, 0,141, 80, 4,199, 0, 47, +/* 0x0110 */ 102,100, 47,137,240,232, 50, 3, 0, 0,186, 1, 0, 0, 0,106, +/* 0x0120 */ 33, 88,106, 5, 89,205,128, 61, 85, 80, 88, 50,116, 19,137,243, +/* 0x0130 */ 106, 6, 88,205,128,141,101,244,137,240, 91, 94, 95,201,194, 12, +/* 0x0140 */ 0,139, 93, 8,106, 10, 88,205,128,185, 2, 0, 0, 0,137,243, +/* 0x0150 */ 106, 55, 88,205,128,141, 93,212,139, 77, 12,139, 85, 16,106, 11, +/* 0x0160 */ 88,205,128,186, 2, 0, 0, 0,137,243,137,249,106, 19, 88,205, +/* 0x0170 */ 128,106, 0,137,199, 86,106, 2,106, 3, 80,106, 0,232, 26,255, +/* 0x0180 */ 255,255,131,196, 24,137, 69,152,185,193, 0, 0, 0,186,192, 1, +/* 0x0190 */ 0, 0,139, 93, 8,106, 5, 88,205,128,137, 69,148,137,195,139, +/* 0x01a0 */ 77,152,137,250,106, 4, 88,205,128, 57,248,116, 10,106,127, 91, +/* 0x01b0 */ 106, 1, 88,205,128,235,254,139, 93,148,106, 6, 88,205,128,233, +/* 0x01c0 */ 106,255,255,255,204,195, 85,137,229, 87, 86, 83,131,236,120,141, +/* 0x01d0 */ 125,228,139, 69, 16,139,117, 12,137, 69,156,165,165,165,131,109, +/* 0x01e0 */ 8, 12,129,125,228, 85, 80, 88, 51,137,117, 12, 15,133,203, 1, +/* 0x01f0 */ 0, 0,199, 69,196, 47,116,109,112,199, 69,200, 47,117,112,120, +/* 0x0200 */ 141, 77,215,106, 20, 88,205,128,137,194,106, 4,137,200,141,125, +/* 0x0210 */ 211,232,146,254,255,255,139, 85,228,198, 69,215, 0,185, 0, 0, +/* 0x0220 */ 0, 0, 49,208,141, 93,172,137, 69,136,106, 78, 88,205,128,139, +/* 0x0230 */ 85,172,137,248, 49, 85,136,139, 85,176,199, 4, 36, 7, 0, 0, +/* 0x0240 */ 0,141, 93,196,193,226, 12, 51, 85,136,232, 89,254,255,255, 94, +/* 0x0250 */ 106, 10, 88,205,128,131,248,254,116, 8,133,192, 15,133,109, 1, +/* 0x0260 */ 0, 0,185,194, 0, 0, 0,186,192, 1, 0, 0,141, 93,196,106, +/* 0x0270 */ 5, 88,205,128,139, 85,232,137, 69,148,137,195,137,209,106, 93, +/* 0x0280 */ 88,205,128,133,192, 15,133,145, 1, 0, 0,106, 0,255,117,148, +/* 0x0290 */ 106, 1,141,130, 0, 16, 0, 0,106, 3, 80,106, 0,232,250,253, +/* 0x02a0 */ 255,255,131,196, 24, 61, 0,240,255,255,137, 69,140, 15,135,101, +/* 0x02b0 */ 1, 0, 0,139, 69,232,106, 0,106,255, 5,255, 15, 0, 0,106, +/* 0x02c0 */ 50, 37, 0,240,255,255,106, 3, 3, 69,140,104, 0, 16, 0, 0, +/* 0x02d0 */ 80,232,198,253,255,255,131,196, 24,235, 75,139, 69,184, 57,200, +/* 0x02e0 */ 15,135,237, 0, 0, 0, 59, 69,236, 15,135,228, 0, 0, 0, 57, +/* 0x02f0 */ 200, 15,130,238, 0, 0, 0,139,125,140,139,117, 12,243,164,139, +/* 0x0300 */ 85,180,139, 93,140,137,209,106, 91, 88,205,128,139, 69,184, 41, +/* 0x0310 */ 69, 8, 1, 85,140, 41, 85,232,139, 85, 8, 1, 69, 12,133,210, +/* 0x0320 */ 15,136,181, 0, 0, 0,141,125,180,139,117, 12,165,165,165,139, +/* 0x0330 */ 77,180,131,109, 8, 12,133,201,137,117, 12,117,158,129,125,184, +/* 0x0340 */ 85, 80, 88, 33, 15,133,202, 0, 0, 0,139, 77,232,133,201, 15, +/* 0x0350 */ 133,242, 0, 0, 0,139, 93,148,106, 6, 88,205,128,133,192, 15, +/* 0x0360 */ 133,171, 0, 0, 0,255,117, 28,255,117, 32,141,117,196, 86,232, +/* 0x0370 */ 88,253,255,255,133,192, 15,136,199, 0, 0, 0,106, 2, 88,205, +/* 0x0380 */ 128,133,192, 15,133,151, 0, 0, 0,106, 2, 88,205,128,133,192, +/* 0x0390 */ 137,193,117, 32,199, 69,160, 85, 80, 88, 52,184,162, 0, 0, 0, +/* 0x03a0 */ 141, 93,160,199, 69,164, 0, 0, 0, 0,205,128,141, 93,196,106, +/* 0x03b0 */ 10, 88,205,128, 49,219,106, 1, 88,205,128,235,254,106, 11,232, +/* 0x03c0 */ 0,254,255,255, 91,106,127, 91,106, 1, 88,205,128,235,254,106, +/* 0x03d0 */ 12,235,236,106, 19,232,234,253,255,255, 88,141, 93,196,106, 10, +/* 0x03e0 */ 88,205,128,235,224,141, 85,168,255,117,188, 82,255,117,140, 80, +/* 0x03f0 */ 255,117, 12,137, 77,168,255, 85,156,131,196, 20,133,192,117, 12, +/* 0x0400 */ 139, 85,180, 59, 85,168, 15,132,246,254,255,255,106, 20,235,197, +/* 0x0410 */ 106, 22,235,193,106, 17,235,189,106, 15,235,185,106, 14,235,181, +/* 0x0420 */ 185, 0, 0, 0, 0,187,255,255,255,255,137,202,106, 7, 88,205, +/* 0x0430 */ 128,141, 93,196,139, 77, 32,139, 85, 28,106, 11, 88,205,128,106, +/* 0x0440 */ 24,235,146,106, 23,235,142,106, 18,235,138, 0, 87,137,215,106, +/* 0x0450 */ 10,252, 89,232, 5, 0, 0, 0,136, 39,151, 95,195,153,247,241, +/* 0x0460 */ 82,133,192,116, 5,232,243,255,255,255, 88, 4, 48,170,195 }; diff --git a/src/stub/i386-linux.elf.interp-fold.h b/src/stub/i386-linux.elf.interp-fold.h index 50605c58..9ddc84df 100644 --- a/src/stub/i386-linux.elf.interp-fold.h +++ b/src/stub/i386-linux.elf.interp-fold.h @@ -1,5 +1,5 @@ /* i386-linux.elf.interp-fold.h - created from i386-linux.elf.interp-fold.bin, 1525 (0x5f5) bytes + created from i386-linux.elf.interp-fold.bin, 1699 (0x6a3) bytes This file is part of the UPX executable compressor. @@ -32,105 +32,116 @@ /* clang-format off */ -#define STUB_I386_LINUX_ELF_INTERP_FOLD_SIZE 1525 -#define STUB_I386_LINUX_ELF_INTERP_FOLD_ADLER32 0x416b996b -#define STUB_I386_LINUX_ELF_INTERP_FOLD_CRC32 0x97caa5e0 +#define STUB_I386_LINUX_ELF_INTERP_FOLD_SIZE 1699 +#define STUB_I386_LINUX_ELF_INTERP_FOLD_ADLER32 0x99edeba0 +#define STUB_I386_LINUX_ELF_INTERP_FOLD_CRC32 0x216ca19d -unsigned char stub_i386_linux_elf_interp_fold[1525] = { +unsigned char stub_i386_linux_elf_interp_fold[1699] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,116, 0, 1, 0, 52, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -/* 0x0040 */ 0, 0, 1, 0,245, 5, 0, 0,248, 5, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,245, 5, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 0, 1, 0,163, 6, 0, 0,164, 6, 0, 0, 5, 0, 0, 0, +/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,163, 6, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 93, 89, 88,141,124,132, 4, 80, 41,192,175,117, /* 0x0080 */ 253,175,137,254,139, 6,131,248, 3,116, 8,131,198, 8,131,248, /* 0x0090 */ 0,117,241,139, 94, 4, 83,129,236, 0, 10, 0, 0,137,226, 81, /* 0x00a0 */ 141, 67, 88,139,115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, -/* 0x00b0 */ 96,232, 68, 4, 0, 0,129,196, 36, 10, 0, 0, 91, 80,139, 75, +/* 0x00b0 */ 96,232,233, 4, 0, 0,129,196, 36, 10, 0, 0, 91, 80,139, 75, /* 0x00c0 */ 20,139, 91, 8,184, 91, 0, 0, 0,205,128, 41,192, 41,201, 41, /* 0x00d0 */ 210, 41,219, 41,237, 41,246, 41,255,195, 83,141, 92, 36, 8,106, -/* 0x00e0 */ 90, 88,205,128, 91,195, 0, 0, 87, 86,137,206, 83,137,195, 57, -/* 0x00f0 */ 8,139,120, 4,115, 10,106,127, 91,106, 1, 88,205,128,235,254, -/* 0x0100 */ 133,201,116, 8,138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, -/* 0x0110 */ 51, 91, 94, 95,195, 85,137,229, 87, 86,137,198, 83,137,211,131, -/* 0x0120 */ 236, 20,139,125, 12,131, 58, 0, 15,132,185, 0, 0, 0,141, 85, -/* 0x0130 */ 228,185, 12, 0, 0, 0,137,240,232,171,255,255,255,139, 69,228, -/* 0x0140 */ 139, 77,232,133,192,117, 19,129,249, 85, 80, 88, 33,117, 15,131, -/* 0x0150 */ 62, 0, 15,132,143, 0, 0, 0,235, 4,133,201,117, 10,106,127, -/* 0x0160 */ 91,106, 1, 88,205,128,235,254, 57,193,119,242, 59, 3,119,238, -/* 0x0170 */ 57,193,115, 86,137, 69,224, 15,182, 69,236, 80,255, 85, 8, 90, -/* 0x0180 */ 141, 85,224,255,117,236, 82,255,115, 4,255,117,232,255,118, 4, -/* 0x0190 */ 255, 16,131,196, 20,133,192,117,197,139, 69,228, 57, 69,224,117, -/* 0x01a0 */ 189,138, 69,237,132,192,116, 24, 15,182,192, 80,255,215, 15,182, -/* 0x01b0 */ 85,238,137, 20, 36,255,117,224,255,115, 4,255, 16,131,196, 12, -/* 0x01c0 */ 139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137,240,232, -/* 0x01d0 */ 20,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208,133,192, -/* 0x01e0 */ 137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201,195,133, -/* 0x01f0 */ 210,137,209,116, 6,198, 0, 0, 64,226,250,195,133,192, 83,137, -/* 0x0200 */ 195,116, 35,168, 1,117, 31,139, 3, 57,208,116, 9,131,248, 1, -/* 0x0210 */ 117, 11,133,210,116, 11,137, 19,137, 75, 4,235, 9,133,192,116, -/* 0x0220 */ 5,131,195, 8,235,225, 91,195, 85,137,229, 87, 86, 83,131,236, -/* 0x0230 */ 84,137, 69,228,139, 69, 8,137, 85,224,139, 77, 16,137, 69,220, -/* 0x0240 */ 3, 64, 28,139, 93,220,137, 77,212,139, 85, 12,137, 69,208, 49, -/* 0x0250 */ 192,102,131,123, 16, 3,137, 85,216, 15,183, 75, 44,139, 85,208, -/* 0x0260 */ 15,149,192,131,206,255,193,224, 4,131,192, 34, 49,219,137, 69, -/* 0x0270 */ 184,137,200, 49,255, 72,120, 31,131, 58, 1,117, 21,139, 66, 8, -/* 0x0280 */ 57,240,115, 5,137,198,139,122, 16, 3, 66, 20, 57,195,115, 2, -/* 0x0290 */ 137,195,131,194, 32,226,225,137,240,129,230, 0,240,255,255,106, -/* 0x02a0 */ 0, 41,243,106, 0, 37,255, 15, 0, 0,137,117,188,141,179,255, -/* 0x02b0 */ 15, 0, 0,255,117,184,129,230, 0,240,255,255,106, 7, 86,255, -/* 0x02c0 */ 117,188,141,188, 7,255, 15, 0, 0,232, 12,254,255,255,129,231, -/* 0x02d0 */ 0,240,255,255,137,194,137,195, 1,242, 41,254,131,196, 24,137, -/* 0x02e0 */ 69,172,137, 85,240, 1,251,137,241,106, 91, 88,205,128,139, 69, -/* 0x02f0 */ 220,199, 69,196, 0, 0, 0, 0,139, 93,172, 43, 93,188,102,131, -/* 0x0300 */ 120, 44, 0,137, 93,204, 15,132,180, 1, 0, 0,139, 85,208,139, -/* 0x0310 */ 2,131,248, 6,117, 24,139, 77,204, 3, 74, 8,186, 3, 0, 0, -/* 0x0320 */ 0,139, 69,212,232,211,254,255,255,233,123, 1, 0, 0, 72, 15, -/* 0x0330 */ 133,116, 1, 0, 0,139, 93,208,199, 69,192, 64, 98, 81,115,139, -/* 0x0340 */ 75, 24,139, 67, 8,131,225, 7,139, 83, 16,193,225, 2,137, 69, -/* 0x0350 */ 236,211,109,192,137,193, 3, 75, 20,137,195,129,227,255, 15, 0, -/* 0x0360 */ 0,137, 85,232,141, 60, 26,139, 85,204, 41,216,131,101,192, 7, -/* 0x0370 */ 1,209,141, 52, 16,137, 77,176,139, 77,208,139, 65, 4, 41,216, -/* 0x0380 */ 131,125,216, 1, 80,255,117,228, 25,192,131,224,224,131,192, 50, -/* 0x0390 */ 131,125,216, 0, 80,137,248,106, 3,116, 3,141, 71, 3, 80, 86, -/* 0x03a0 */ 232, 53,253,255,255,131,196, 24, 57,198, 15,133,170, 0, 0, 0, -/* 0x03b0 */ 131,125,216, 0,116, 19,255,117,224,255,117,228,139, 69,216,141, -/* 0x03c0 */ 85,232,232, 78,253,255,255, 89, 88,137,218,137,251,137,240,247, -/* 0x03d0 */ 219,232, 25,254,255,255,129,227,255, 15, 0, 0,141, 4, 62,137, -/* 0x03e0 */ 218,137, 93,180,232, 6,254,255,255,131,125,216, 0,116, 91,139, -/* 0x03f0 */ 69,208,131, 56, 1,117, 83,246, 64, 24, 1,116, 77,139, 93,208, -/* 0x0400 */ 137,194,139, 64, 20, 59, 67, 16,139, 82, 8,141, 12, 16,117, 14, -/* 0x0410 */ 137,200,247,216, 37,255, 15, 0, 0,131,248, 3,119, 12,139, 69, -/* 0x0420 */ 208,141, 74, 12,131,120, 4, 0,117, 15,139, 1, 61,205,128, 97, -/* 0x0430 */ 195,116, 6,199, 1,205,128, 97,195,133,201,116, 13,139, 69,212, -/* 0x0440 */ 49,210,131,224,254,232,178,253,255,255,137,243,137,249,139, 85, -/* 0x0450 */ 192,106,125, 88,205,128,133,192,116, 10,106,127, 91,106, 1, 88, -/* 0x0460 */ 205,128,235,254,139, 85,180,141, 4, 23,141, 28, 6, 59, 93,176, -/* 0x0470 */ 115, 30,106, 0,106, 0,106, 50,255,117,192, 41, 93,176,255,117, -/* 0x0480 */ 176, 83,232, 83,252,255,255,131,196, 24, 57,195,116, 27,235,202, -/* 0x0490 */ 131,125,216, 0,116, 19,141, 79, 3,129,225,255, 15, 0, 0,131, -/* 0x04a0 */ 249, 3,119, 5,106, 91, 88,205,128,139, 77,220,255, 69,196, 15, -/* 0x04b0 */ 183, 65, 44,131, 69,208, 32, 57, 69,196, 15,140, 76,254,255,255, -/* 0x04c0 */ 131,125,216, 0,117, 14,139, 93,228,106, 6, 88,205,128,133,192, -/* 0x04d0 */ 116, 20,235,134,139, 69,220,102,131,120, 16, 3,116, 8,139, 93, -/* 0x04e0 */ 240,106, 45, 88,205,128,139, 85,220,139, 82, 24, 1, 85,204,139, -/* 0x04f0 */ 69,204,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83, -/* 0x0500 */ 131,236, 16,141, 85, 24,139,125, 20,255,117, 40,141, 71, 52,139, -/* 0x0510 */ 93, 8,255,117, 16,137, 69,240,139,117, 32,141, 69, 32,232,242, -/* 0x0520 */ 251,255,255,139, 85,240,139, 69, 12,139, 74, 8,186, 3, 0, 0, -/* 0x0530 */ 0,137, 69, 32,137,216,131,193, 52, 41,117, 36,232,187,252,255, -/* 0x0540 */ 255, 15,183, 79, 42,137,216,186, 4, 0, 0, 0,232,171,252,255, -/* 0x0550 */ 255, 15,183, 79, 44,137,216,186, 5, 0, 0, 0,232,155,252,255, -/* 0x0560 */ 255,139, 79, 24,137,216,186, 9, 0, 0, 0,232,140,252,255,255, -/* 0x0570 */ 141, 69, 32, 83,139, 85, 40, 80,139, 69, 16, 87,232,167,252,255, -/* 0x0580 */ 255,102,139, 79, 44,131,196, 20, 49,210,102,133,201,137,195,116, -/* 0x0590 */ 90,139, 69,240,131, 56, 3,117, 70, 49,201,139, 88, 8,137,202, -/* 0x05a0 */ 106, 5, 88,205,128,133,192,137,198,120, 21,186, 0, 2, 0, 0, -/* 0x05b0 */ 137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10, -/* 0x05c0 */ 106,127, 91,106, 1, 88,205,128,235,254,106, 0, 49,210,106, 0, -/* 0x05d0 */ 137,240, 87,232, 80,252,255,255,131,196, 12,137,195,235, 12, 66, -/* 0x05e0 */ 15,183,193,131, 69,240, 32, 57,194,124,166,141,101,244,137,216, -/* 0x05f0 */ 91, 94, 95,201,195 +/* 0x00e0 */ 90, 88,205,128, 91,195, 0, 0, 85, 87,137,215, 86,137,206, 83, +/* 0x00f0 */ 137,195,139, 19,139, 64, 4, 57,202,137,197,115, 10,106,127, 91, +/* 0x0100 */ 106, 1, 88,205,128,235,254,133,201,116, 14,138, 69, 0, 69,136, +/* 0x0110 */ 7, 71,226,247,139, 67, 4,139, 19, 1,240, 41,242,137, 67, 4, +/* 0x0120 */ 137, 19, 91, 94, 95, 93,195, 85,137,229, 87, 86,137,198, 83,137, +/* 0x0130 */ 211,131,236, 20,131, 58, 0,139,125, 8, 15,132,133, 0, 0, 0, +/* 0x0140 */ 141, 85,228,137,240,185, 12, 0, 0, 0,232,153,255,255,255,139, +/* 0x0150 */ 69,228,133,192, 15,132,160, 0, 0, 0,139, 77,232,133,201, 15, +/* 0x0160 */ 132,164, 0, 0, 0, 57,193, 15,135,156, 0, 0, 0, 59, 3, 15, +/* 0x0170 */ 135,148, 0, 0, 0, 57,193,115, 84,137, 69,224, 15,182, 69,236, +/* 0x0180 */ 80,255,215, 90,141, 85,224,255,117,236, 82,255,115, 4,255,117, +/* 0x0190 */ 232,255,118, 4,255, 16,131,196, 20,133,192,117,108,139, 85,228, +/* 0x01a0 */ 59, 85,224,117,100,138, 69,237,132,192,117, 48,139, 69,232, 1, +/* 0x01b0 */ 70, 4, 41, 6,139, 3, 1, 83, 4, 41,208,137, 3,133,192, 15, +/* 0x01c0 */ 133,123,255,255,255,141,101,244, 91, 94, 95,201,195,139, 83, 4, +/* 0x01d0 */ 137,240,232, 17,255,255,255,139, 85,228,235,216, 15,182,192, 80, +/* 0x01e0 */ 255, 85, 12, 15,182, 85,238,137, 20, 36,255,117,224,255,115, 4, +/* 0x01f0 */ 255, 16,139, 85,228,131,196, 12,235,178,129,125,232, 85, 80, 88, +/* 0x0200 */ 33,117, 6,139, 14,133,201,116,188,106,127, 91,106, 1, 88,205, +/* 0x0210 */ 128,235,254,133,210,116, 8,137,209,198, 0, 0, 64,226,250,195, +/* 0x0220 */ 133,192, 83,137,195,116, 33,168, 1,117, 29,139, 3, 57,208,116, +/* 0x0230 */ 18,131,248, 1,116, 20,133,192,116, 14,131,195, 8,139, 3, 57, +/* 0x0240 */ 208,117,238,137, 19,137, 75, 4, 91,195,133,210,117,245,131,195, +/* 0x0250 */ 8,235,234, 85,137,229, 87, 86,191, 0, 0, 0, 0, 83,190, 0, +/* 0x0260 */ 0, 0, 0,131,236, 84,137, 69,228,139, 69, 8,137, 85,224,139, +/* 0x0270 */ 77, 16,137, 69,220, 3, 64, 28,139, 93,220,137, 77,212,139, 85, +/* 0x0280 */ 12,102,131,123, 16, 3,137, 69,208,184, 0, 0, 0, 0, 15,183, +/* 0x0290 */ 75, 44,137, 85,216,187,255,255,255,255, 15,149,192,139, 85,208, +/* 0x02a0 */ 193,224, 4,131,192, 34,137, 69,184,137,200, 72,120, 14,131, 58, +/* 0x02b0 */ 1, 15,132,249, 1, 0, 0,131,194, 32,226,242,106, 0,137,216, +/* 0x02c0 */ 129,227, 0,240,255,255,106, 0, 41,222,255,117,184,129,198,255, +/* 0x02d0 */ 15, 0, 0,106, 7,129,230, 0,240,255,255, 37,255, 15, 0, 0, +/* 0x02e0 */ 86, 83,141,188, 7,255, 15, 0, 0,137, 93,188,232,233,253,255, +/* 0x02f0 */ 255,129,231, 0,240,255,255,137,194, 1,242,137,195, 41,254,131, +/* 0x0300 */ 196, 24,137, 69,172, 1,251,137, 85,240,137,241,106, 91, 88,205, +/* 0x0310 */ 128,139, 69,220,139, 93,172,199, 69,196, 0, 0, 0, 0, 43, 93, +/* 0x0320 */ 188,102,139, 80, 44,102,133,210,137, 93,204,117, 24,233, 77, 1, +/* 0x0330 */ 0, 0,255, 69,196, 15,183,194,131, 69,208, 32, 59, 69,196, 15, +/* 0x0340 */ 142, 58, 1, 0, 0,139, 77,208,139, 1,131,248, 6, 15,132,253, +/* 0x0350 */ 1, 0, 0, 72,117,220,139, 85,208,199, 69,192, 64, 98, 81,115, +/* 0x0360 */ 139, 74, 24,131,225, 7,193,225, 2,211,109,192,137,209,139, 65, +/* 0x0370 */ 8,139, 82, 16,137,195,139, 73, 20,129,227,255, 15, 0, 0,137, +/* 0x0380 */ 85,232,141, 52, 26,139, 85,204, 1,193,137, 69,236, 1,209, 41, +/* 0x0390 */ 216,137, 77,176,139, 77,208,141, 60, 16,139, 85,216,139, 65, 4, +/* 0x03a0 */ 131,101,192, 7, 41,216,131,125,216, 1, 80,255,117,228, 25,192, +/* 0x03b0 */ 131,224,224,131,192, 50,133,210, 80,137,240,106, 3,116, 3,141, +/* 0x03c0 */ 70, 3, 80, 87,232, 17,253,255,255,131,196, 24, 57,248, 15,133, +/* 0x03d0 */ 174, 1, 0, 0,139, 77,216,133,201,116, 19,255,117,224,255,117, +/* 0x03e0 */ 228,141, 85,232,139, 69,216,232, 59,253,255,255, 88, 90,137,218, +/* 0x03f0 */ 137,243,137,248,247,219,232, 24,254,255,255,129,227,255, 15, 0, +/* 0x0400 */ 0,141, 4, 55,137,218,137, 93,180,232, 5,254,255,255,139, 69, +/* 0x0410 */ 216,133,192,116, 12,139, 69,208,131, 56, 1, 15,132,217, 0, 0, +/* 0x0420 */ 0,137,251,137,241,139, 85,192,106,125, 88,205,128,133,192, 15, +/* 0x0430 */ 133, 77, 1, 0, 0,139, 85,180,141, 4, 22,141, 28, 7, 59, 93, +/* 0x0440 */ 176, 15,130,135, 0, 0, 0,139,125,216,133,255, 15,132, 20, 1, +/* 0x0450 */ 0, 0,141, 78, 3,129,225,255, 15, 0, 0,131,249, 3,119, 5, +/* 0x0460 */ 106, 91, 88,205,128,139, 77,220,255, 69,196,102,139, 81, 44,131, +/* 0x0470 */ 69,208, 32, 15,183,194, 59, 69,196, 15,143,198,254,255,255,139, +/* 0x0480 */ 93,216,133,219, 15,132,232, 0, 0, 0,139, 69,220,102,131,120, +/* 0x0490 */ 16, 3,116, 8,139, 93,240,106, 45, 88,205,128,139, 85,220,139, +/* 0x04a0 */ 82, 24, 1, 85,204,139, 69,204,141,101,244, 91, 94, 95,201,195, +/* 0x04b0 */ 139, 66, 8, 57,216,115, 5,137,195,139,122, 16, 3, 66, 20, 57, +/* 0x04c0 */ 240, 15,134,240,253,255,255,137,198,233,233,253,255,255,106, 0, +/* 0x04d0 */ 106, 0,106, 50,255,117,192, 41, 93,176,255,117,176, 83,232,247, +/* 0x04e0 */ 251,255,255,131,196, 24, 57,216, 15,133,148, 0, 0, 0,139, 93, +/* 0x04f0 */ 220,102,139, 83, 44,233, 56,254,255,255,246, 64, 24, 1, 15,132, +/* 0x0500 */ 29,255,255,255,139, 93,208,137,194,139, 64, 20, 59, 67, 16,139, +/* 0x0510 */ 82, 8,141, 12, 16,116,117,139, 69,208,141, 74, 12,139, 64, 4, +/* 0x0520 */ 133,192,117, 15,139, 1, 61,205,128, 97,195,116, 6,199, 1,205, +/* 0x0530 */ 128, 97,195,133,201, 15,132,230,254,255,255,139, 69,212,186, 0, +/* 0x0540 */ 0, 0, 0,131,224,254,232,213,252,255,255,233,209,254,255,255, +/* 0x0550 */ 139, 93,208,186, 3, 0, 0, 0,139, 77,204, 3, 75, 8,139, 69, +/* 0x0560 */ 212,232,186,252,255,255,139, 69,220,102,139, 80, 44,233,192,253, +/* 0x0570 */ 255,255,139, 93,228,106, 6, 88,205,128,133,192, 15,132, 26,255, +/* 0x0580 */ 255,255,106,127, 91,106, 1, 88,205,128,235,254,137,200,247,216, +/* 0x0590 */ 37,255, 15, 0, 0,131,248, 3,119,138,233,120,255,255,255, 85, +/* 0x05a0 */ 137,229, 87, 86, 83,131,236, 16,141, 85, 24,139,125, 20,255,117, +/* 0x05b0 */ 40,141, 71, 52,139, 93, 8,255,117, 16,137, 69,240,139,117, 32, +/* 0x05c0 */ 141, 69, 32,232, 95,251,255,255,139, 85,240,139, 69, 12,139, 74, +/* 0x05d0 */ 8,186, 3, 0, 0, 0,137, 69, 32,137,216,131,193, 52, 41,117, +/* 0x05e0 */ 36,232, 58,252,255,255, 15,183, 79, 42,137,216,186, 4, 0, 0, +/* 0x05f0 */ 0,232, 42,252,255,255, 15,183, 79, 44,137,216,186, 5, 0, 0, +/* 0x0600 */ 0,232, 26,252,255,255,139, 79, 24,137,216,186, 9, 0, 0, 0, +/* 0x0610 */ 232, 11,252,255,255,141, 69, 32, 83,139, 85, 40, 80,139, 69, 16, +/* 0x0620 */ 87,232, 45,252,255,255,102,139, 79, 44,131,196, 20,137,195,102, +/* 0x0630 */ 133,201,186, 0, 0, 0, 0,116, 20,139, 69,240,131, 56, 3,116, +/* 0x0640 */ 22, 66, 15,183,193,131, 69,240, 32, 57,208,127,236,141,101,244, +/* 0x0650 */ 137,216, 91, 94, 95,201,195,185, 0, 0, 0, 0,139, 88, 8,137, +/* 0x0660 */ 202,106, 5, 88,205,128,133,192,137,198,120, 21,186, 0, 2, 0, +/* 0x0670 */ 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, +/* 0x0680 */ 10,106,127, 91,106, 1, 88,205,128,235,254,106, 0,186, 0, 0, +/* 0x0690 */ 0, 0,106, 0,137,240, 87,232,183,251,255,255,131,196, 12,137, +/* 0x06a0 */ 195,235,170 }; diff --git a/src/stub/i386-linux.elf.shell-fold.h b/src/stub/i386-linux.elf.shell-fold.h index 629f51f5..6d6a816d 100644 --- a/src/stub/i386-linux.elf.shell-fold.h +++ b/src/stub/i386-linux.elf.shell-fold.h @@ -1,5 +1,5 @@ /* i386-linux.elf.shell-fold.h - created from i386-linux.elf.shell-fold.bin, 1324 (0x52c) bytes + created from i386-linux.elf.shell-fold.bin, 1392 (0x570) bytes This file is part of the UPX executable compressor. @@ -32,24 +32,24 @@ /* clang-format off */ -#define STUB_I386_LINUX_ELF_SHELL_FOLD_SIZE 1324 -#define STUB_I386_LINUX_ELF_SHELL_FOLD_ADLER32 0x62152a92 -#define STUB_I386_LINUX_ELF_SHELL_FOLD_CRC32 0x427dee0b +#define STUB_I386_LINUX_ELF_SHELL_FOLD_SIZE 1392 +#define STUB_I386_LINUX_ELF_SHELL_FOLD_ADLER32 0xea6047e4 +#define STUB_I386_LINUX_ELF_SHELL_FOLD_CRC32 0x840b538d -unsigned char stub_i386_linux_elf_shell_fold[1324] = { +unsigned char stub_i386_linux_elf_shell_fold[1392] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, -/* 0x0040 */ 0, 0, 64, 1, 44, 5, 0, 0, 44, 5, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 44, 5, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 0, 64, 1,112, 5, 0, 0,112, 5, 0, 0, 5, 0, 0, 0, +/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,112, 5, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 137,230,129,236, 80, 1, 0, 0,137,231,173,171,173,171,133,192, /* 0x0090 */ 117,250,173,171,133,192,117,250, 87, 64,106, 82, 89,243,171, 72, /* 0x00a0 */ 171,171, 95,173,133,192,145,173,116, 15,131,249, 42,115,244,137, /* 0x00b0 */ 76,207,248,137, 68,207,252,235,234,129,236, 0, 10, 0, 0,147, -/* 0x00c0 */ 139, 10,139, 90, 4,137,198, 96,232,239, 2, 0, 0, 89, 80, 97, +/* 0x00c0 */ 139, 10,139, 90, 4,137,198, 96,232, 31, 3, 0, 0, 89, 80, 97, /* 0x00d0 */ 129,196, 0, 10, 0, 0, 89, 90, 82, 65, 86,131,238, 3,102,199, /* 0x00e0 */ 6, 45, 99, 65, 86, 65, 82, 81, 87,141,188, 36, 0,245,255,255, /* 0x00f0 */ 96,137,227,137,252,185,192, 2, 0, 0, 49,192,243,171,137,220, @@ -60,64 +60,68 @@ unsigned char stub_i386_linux_elf_shell_fold[1324] = { /* 0x0140 */ 247, 60, 10,116, 12,141, 78,255,172, 60, 10,117,251,198, 70,255, /* 0x0150 */ 0, 86, 87,227, 1, 81, 85,137,225,106, 11, 88,205,128,247,216, /* 0x0160 */ 147,106, 1, 88,205,128,244, 83,141, 92, 36, 8,106, 90, 88,205, -/* 0x0170 */ 128, 91,195, 0, 87, 86, 83,137,195,139,124, 36, 16, 57, 56,139, -/* 0x0180 */ 112, 4,115, 10,106,127, 91,106, 1, 88,205,128,235,254,133,255, -/* 0x0190 */ 116, 10,137,249,138, 6, 70,136, 2, 66,226,248, 1,123, 4, 41, -/* 0x01a0 */ 59, 91, 94, 95,195,133,210,137,209,116, 6,198, 0, 0, 64,226, -/* 0x01b0 */ 250,195, 85, 49,201,137,229, 87, 86, 83,137,195,131,236, 52,137, -/* 0x01c0 */ 85,240,139, 69, 8,137,202,137, 69,236,106, 5, 88,205,128,133, -/* 0x01d0 */ 192,137, 69,232,121, 10,106,127, 91,106, 1, 88,205,128,235,254, -/* 0x01e0 */ 186, 0, 2, 0, 0,139, 93,232,139, 77,240,106, 3, 88,205,128, -/* 0x01f0 */ 61, 0, 2, 0, 0,117,223,139, 85,240,102,184, 1, 0,102,131, -/* 0x0200 */ 122, 18, 3, 15,133,171, 1, 0, 0, 3, 82, 28, 49,192,139, 77, -/* 0x0210 */ 240,102,131,121, 16, 3,137, 85,228,137,209,139, 85,240, 15,149, -/* 0x0220 */ 192, 15,183, 90, 44,193,224, 4,131,192, 34,131,207,255,137, 69, -/* 0x0230 */ 212,137,216, 49,210, 72,120, 33,137,222,131, 57, 1,117, 20,139, -/* 0x0240 */ 65, 8, 57,248,115, 2,137,199,139, 89, 20, 1,195, 57,218,115, -/* 0x0250 */ 2,137,218,131,193, 32, 78,117,225,246, 69,212, 16,116, 7,137, -/* 0x0260 */ 211,106, 45, 88,205,128,137,251,106, 0,129,227, 0,240,255,255, -/* 0x0270 */ 106,255, 41,218,255,117,212,141,130,255, 15, 0, 0,106, 7, 37, -/* 0x0280 */ 0,240,255,255, 80, 83,232,220,254,255,255,131,196, 24, 41,216, -/* 0x0290 */ 199, 69,220, 0, 0, 0, 0,137, 69,224,139, 69,240,102,131,120, -/* 0x02a0 */ 44, 0, 15,132,247, 0, 0, 0,139, 85,228,139, 2,131,248, 6, -/* 0x02b0 */ 117, 14,139, 66, 8,139, 77,236,137, 65, 20,233,200, 0, 0, 0, -/* 0x02c0 */ 72, 15,133,193, 0, 0, 0,139, 93,228,199, 69,216, 64, 98, 81, -/* 0x02d0 */ 115,139, 75, 24,139, 67, 8,131,225, 7,193,225, 2,137,194,211, -/* 0x02e0 */ 109,216,139, 77,228, 3, 83, 20,137,195,139,121, 16,129,227,255, -/* 0x02f0 */ 15, 0, 0,139, 77,224, 41,216, 1,223,131,101,216, 7, 1,202, -/* 0x0300 */ 141, 52, 8,137, 85,204,139, 85,228,139, 66, 4, 41,216, 80,255, -/* 0x0310 */ 117,232,106, 18,106, 3, 87, 86,232, 74,254,255,255,131,196, 24, -/* 0x0320 */ 57,198,117, 48,137,218,137,240,232,120,254,255,255,137,249,247, -/* 0x0330 */ 217,141, 4, 62,129,225,255, 15, 0, 0,137,243,137,202,137, 77, -/* 0x0340 */ 208,232, 95,254,255,255,137,249,139, 85,216,106,125, 88,205,128, -/* 0x0350 */ 133,192,116, 10,106,127, 91,106, 1, 88,205,128,235,254,139, 85, -/* 0x0360 */ 208,141, 4, 23,141, 28, 6, 59, 93,204,115, 28,106, 0,106,255, -/* 0x0370 */ 106, 50,255,117,216, 41, 93,204,255,117,204, 83,232,230,253,255, -/* 0x0380 */ 255,131,196, 24, 57,195,117,204,139, 77,240,255, 69,220, 15,183, -/* 0x0390 */ 65, 44,131, 69,228, 32, 57, 69,220, 15,140, 9,255,255,255,139, -/* 0x03a0 */ 93,232,106, 6, 88,205,128,133,192,117,169,139, 85,240,139, 69, -/* 0x03b0 */ 224, 3, 66, 24,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, -/* 0x03c0 */ 86, 83,131,236, 36,141,117, 32,139, 69, 16,141, 93, 24,139, 85, -/* 0x03d0 */ 20,137, 69,212,139, 69, 36,139,125, 8,137, 85,208, 5, 85, 80, -/* 0x03e0 */ 88, 50,137, 69,240,139, 69,240, 5, 85, 80, 88, 51,131,125, 32, -/* 0x03f0 */ 0,137, 69,236, 15,132,140, 0, 0, 0,141, 85,220,137,216,106, -/* 0x0400 */ 12,232,110,253,255,255, 88,139, 69,220,139, 77,224,133,192,117, -/* 0x0410 */ 15,129,249, 85, 80, 88, 33,117, 11,131, 59, 0,116,104,235, 4, -/* 0x0420 */ 133,201,117, 10,106,127, 91,106, 1, 88,205,128,235,254, 57,193, -/* 0x0430 */ 119,242, 59, 6,119,238, 57,193,115, 45,137, 69,216,141, 69,216, -/* 0x0440 */ 255,117,228, 80,255,118, 4, 81,255,115, 4,255, 85,212,131,196, -/* 0x0450 */ 20,133,192,117,207,139, 69,220, 57, 69,216,117,199,139, 69,224, -/* 0x0460 */ 1, 67, 4, 41, 3,235, 12,139, 86, 4,137,216, 81,232, 2,253, -/* 0x0470 */ 255,255, 89,139, 85,220,139, 6, 1, 86, 4, 41,208,133,192,137, -/* 0x0480 */ 6,233,110,255,255,255,139, 69,236,139, 85,208,138, 24,139, 69, -/* 0x0490 */ 236,198, 0, 0,139, 69,240, 87,232, 21,253,255,255,137,198,139, -/* 0x04a0 */ 69,236,131,254, 1,136, 24,184, 1, 0, 0, 0, 90,116,117,235, -/* 0x04b0 */ 18,139, 66, 8,106, 0,139, 85,208,232,244,252,255,255,137,198, -/* 0x04c0 */ 88,235, 95,139, 85,208, 49,201,199, 71, 16, 3, 0, 0, 0, 15, -/* 0x04d0 */ 183, 66, 42,199, 71, 24, 4, 0, 0, 0,199, 71, 32, 5, 0, 0, -/* 0x04e0 */ 0,199, 71, 40, 6, 0, 0, 0,137, 71, 28, 15,183, 66, 44,199, -/* 0x04f0 */ 71, 44, 0, 16, 0, 0,137,119, 68,131,194, 52,199, 71, 64, 9, -/* 0x0500 */ 0, 0, 0,137, 71, 36,139, 69,208,102,139, 88, 44,102,133,219, -/* 0x0510 */ 116, 16,131, 58, 3,116,154, 65, 15,183,195,131,194, 32, 57,193, -/* 0x0520 */ 124,240,137,240,141,101,244, 91, 94, 95,201,195 +/* 0x0170 */ 128, 91,195, 0, 87, 86, 83,137,195,139,124, 36, 16,139, 11,139, +/* 0x0180 */ 64, 4, 57,249,137,198,115, 10,106,127, 91,106, 1, 88,205,128, +/* 0x0190 */ 235,254,133,255,116, 15,137,249,138, 6, 70,136, 2, 66,226,248, +/* 0x01a0 */ 139, 67, 4,139, 11, 1,248, 41,249,137, 67, 4,137, 11, 91, 94, +/* 0x01b0 */ 95,195,133,210,116, 8,137,209,198, 0, 0, 64,226,250,195, 85, +/* 0x01c0 */ 185, 0, 0, 0, 0,137,229, 87, 86, 83,137,195,131,236, 52,137, +/* 0x01d0 */ 85,240,139, 69, 8,137,202,137, 69,236,106, 5, 88,205,128,133, +/* 0x01e0 */ 192,137, 69,232,120, 45,186, 0, 2, 0, 0,139, 93,232,139, 77, +/* 0x01f0 */ 240,106, 3, 88,205,128, 61, 0, 2, 0, 0,117, 22,139, 85,240, +/* 0x0200 */ 102,184, 1, 0,102,131,122, 18, 3,116, 18,141,101,244, 91, 94, +/* 0x0210 */ 95,201,195,106,127, 91,106, 1, 88,205,128,235,254, 3, 82, 28, +/* 0x0220 */ 184, 0, 0, 0, 0,139, 77,240,191,255,255,255,255,102,131,121, +/* 0x0230 */ 16, 3,137, 85,228,137,209,139, 85,240, 15,149,192, 15,183, 90, +/* 0x0240 */ 44,193,224, 4,186, 0, 0, 0, 0,131,192, 34,137, 69,212,137, +/* 0x0250 */ 216, 72,120, 37,137,222,235, 6,131,193, 32, 78,116, 27,131, 57, +/* 0x0260 */ 1,117,245,139, 65, 8, 57,248,115, 2,137,199,139, 89, 20, 1, +/* 0x0270 */ 195, 57,211,118,227,137,218,235,223,246, 69,212, 16,116, 7,137, +/* 0x0280 */ 211,106, 45, 88,205,128,137,251,106, 0,129,227, 0,240,255,255, +/* 0x0290 */ 106,255, 41,218,255,117,212,141,130,255, 15, 0, 0,106, 7, 37, +/* 0x02a0 */ 0,240,255,255, 80, 83,232,188,254,255,255,131,196, 24, 41,216, +/* 0x02b0 */ 199, 69,220, 0, 0, 0, 0,137, 69,224,139, 69,240,102,139, 80, +/* 0x02c0 */ 44,102,133,210,117, 20,235, 46, 72,116, 73,255, 69,220, 15,183, +/* 0x02d0 */ 194,131, 69,228, 32, 59, 69,220,126, 28,139, 77,228,139, 1,131, +/* 0x02e0 */ 248, 6,117,228,139, 65, 8,139, 93,236,137, 67, 20,139, 69,240, +/* 0x02f0 */ 102,139, 80, 44,235,213,139, 93,232,106, 6, 88,205,128,133,192, +/* 0x0300 */ 15,133,180, 0, 0, 0,139, 85,240,139, 69,224, 3, 66, 24,233, +/* 0x0310 */ 247,254,255,255,139, 85,228,199, 69,216, 64, 98, 81,115,139, 74, +/* 0x0320 */ 24,139, 66, 8,131,225, 7,193,225, 2,137,195,211,109,216,137, +/* 0x0330 */ 209,139, 82, 20,129,227,255, 15, 0, 0,139,121, 16,139, 77,224, +/* 0x0340 */ 1,194, 41,216, 1,223, 1,202,141, 52, 8,137, 85,204,139, 85, +/* 0x0350 */ 228,131,101,216, 7,139, 66, 4, 41,216, 80,255,117,232,106, 18, +/* 0x0360 */ 106, 3, 87, 86,232,254,253,255,255,131,196, 24, 57,240,117, 74, +/* 0x0370 */ 137,218,137,240,232, 57,254,255,255,137,249,247,217,141, 4, 62, +/* 0x0380 */ 129,225,255, 15, 0, 0,137,243,137,202,137, 77,208,232, 32,254, +/* 0x0390 */ 255,255,137,249,139, 85,216,106,125, 88,205,128,133,192,117, 26, +/* 0x03a0 */ 139, 85,208,141, 4, 23,141, 28, 6, 59, 93,204,114, 22,139, 93, +/* 0x03b0 */ 240,102,139, 83, 44,233, 17,255,255,255,106,127, 91,106, 1, 88, +/* 0x03c0 */ 205,128,235,254,106, 0,106,255,106, 50,255,117,216, 41, 93,204, +/* 0x03d0 */ 255,117,204, 83,232,142,253,255,255,131,196, 24, 57,216,117,218, +/* 0x03e0 */ 139, 77,240,102,139, 81, 44,233,223,254,255,255, 85,137,229, 87, +/* 0x03f0 */ 86, 83,131,236, 36,141, 93, 32,139, 69, 16,141,117, 24,139, 85, +/* 0x0400 */ 20,137, 69,212,139, 69, 36,139,125, 8,137, 85,208, 5, 85, 80, +/* 0x0410 */ 88, 50,137, 69,240,139, 69,240, 5, 85, 80, 88, 51,131,125, 32, +/* 0x0420 */ 0,137, 69,236,235, 62,137, 69,216,141, 69,216,255,117,228, 80, +/* 0x0430 */ 255,115, 4, 81,255,118, 4,255, 85,212,131,196, 20,133,192, 15, +/* 0x0440 */ 133, 13, 1, 0, 0,139, 85,220, 59, 85,216, 15,133, 1, 1, 0, +/* 0x0450 */ 0,139, 69,224, 1, 70, 4, 41, 6,139, 3, 1, 83, 4, 41,208, +/* 0x0460 */ 137, 3,133,192,116, 91,141, 85,220,137,240,106, 12,232, 2,253, +/* 0x0470 */ 255,255, 88,139, 69,220,133,192,116, 48,139, 77,224,133,201, 15, +/* 0x0480 */ 132,205, 0, 0, 0, 57,193, 15,135,197, 0, 0, 0, 59, 3, 15, +/* 0x0490 */ 135,189, 0, 0, 0, 57,193,114,141,139, 83, 4,137,240, 81,232, +/* 0x04a0 */ 208,252,255,255, 89,139, 85,220,235,175,129,125,224, 85, 80, 88, +/* 0x04b0 */ 33, 15,133,155, 0, 0, 0,139, 30,133,219, 15,133,145, 0, 0, +/* 0x04c0 */ 0,139, 69,236,139, 85,208,138, 24,139, 69,236,198, 0, 0,139, +/* 0x04d0 */ 69,240, 87,232,231,252,255,255,137,198,139, 69,236,131,254, 1, +/* 0x04e0 */ 136, 24,184, 1, 0, 0, 0, 90,116, 96,139, 93,208,185, 0, 0, +/* 0x04f0 */ 0, 0,199, 71, 16, 3, 0, 0, 0, 15,183, 67, 42,199, 71, 24, +/* 0x0500 */ 4, 0, 0, 0,199, 71, 32, 5, 0, 0, 0,199, 71, 40, 6, 0, +/* 0x0510 */ 0, 0,137, 71, 28, 15,183, 67, 44,199, 71, 44, 0, 16, 0, 0, +/* 0x0520 */ 137,119, 68,199, 71, 64, 9, 0, 0, 0,137, 71, 36,137,216, 15, +/* 0x0530 */ 183, 83, 44,131,192, 52,131,250, 0,235, 11,131, 56, 3,116, 28, +/* 0x0540 */ 65,131,192, 32, 57,202,127,243,137,240,141,101,244, 91, 94, 95, +/* 0x0550 */ 201,195,106,127, 91,106, 1, 88,205,128,235,254,139, 64, 8,106, +/* 0x0560 */ 0,139, 85,208,232, 86,252,255,255,137,198, 88,137,240,235,218 }; diff --git a/src/stub/i386-netbsd.elf-fold.h b/src/stub/i386-netbsd.elf-fold.h index 1e560278..5b337665 100644 --- a/src/stub/i386-netbsd.elf-fold.h +++ b/src/stub/i386-netbsd.elf-fold.h @@ -1,5 +1,5 @@ /* i386-netbsd.elf-fold.h - created from i386-netbsd.elf-fold.bin, 1813 (0x715) bytes + created from i386-netbsd.elf-fold.bin, 2021 (0x7e5) bytes This file is part of the UPX executable compressor. @@ -32,17 +32,17 @@ /* clang-format off */ -#define STUB_I386_NETBSD_ELF_FOLD_SIZE 1813 -#define STUB_I386_NETBSD_ELF_FOLD_ADLER32 0x724a09f5 -#define STUB_I386_NETBSD_ELF_FOLD_CRC32 0x2a95f51f +#define STUB_I386_NETBSD_ELF_FOLD_SIZE 2021 +#define STUB_I386_NETBSD_ELF_FOLD_ADLER32 0x6fd68771 +#define STUB_I386_NETBSD_ELF_FOLD_CRC32 0x23ed5a87 -unsigned char stub_i386_netbsd_elf_fold[1813] = { +unsigned char stub_i386_netbsd_elf_fold[2021] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, -/* 0x0040 */ 0, 16,192, 0, 21, 7, 0, 0, 24, 7, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 21, 7, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 16,192, 0,229, 7, 0, 0,232, 7, 0, 0, 5, 0, 0, 0, +/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,229, 7, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 41,201,186,248, 2, 0, 0,137,230,137,231,232,134, 0, 0, 0, @@ -51,104 +51,117 @@ unsigned char stub_i386_netbsd_elf_fold[1813] = { /* 0x00b0 */ 141,148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192, /* 0x00c0 */ 102,131,123, 16, 3,117, 1,146, 80,139, 67, 24,139,112,248, 41, /* 0x00d0 */ 240,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, 71,232, -/* 0x00e0 */ 140, 4, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 90, +/* 0x00e0 */ 75, 5, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 90, /* 0x00f0 */ 193,226, 12, 1,211, 80,106, 0,137,229, 41,217, 41,192, 81, 83, /* 0x0100 */ 80, 79, 60,175,175,117,252,255, 55, 49,255, 49,246, 49,210, 49, /* 0x0110 */ 201, 49,219,176, 73,195,173,171,173,171,133,192,117,250,173,171, /* 0x0120 */ 133,192,117,250, 87,173,171,131,248, 32,115, 3, 15,179,194,133, /* 0x0130 */ 192,173,171,117,240,131,239, 8, 1,201, 64,243,171, 72,171,171, -/* 0x0140 */ 95,195, 0, 0, 85,137,229, 87, 86,137,206, 83,137,195, 57, 8, -/* 0x0150 */ 139,120, 4,115, 7,106,127,232,113, 5, 0, 0,133,201,116, 8, -/* 0x0160 */ 138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, 51,141,101,244, -/* 0x0170 */ 91, 94, 95,201,195, 85,137,229, 87, 86,137,198, 83,137,211,131, -/* 0x0180 */ 236, 24,139, 69, 8,139,125, 12,137, 69,220,131, 58, 0, 15,132, -/* 0x0190 */ 182, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0,137,240,232,161, -/* 0x01a0 */ 255,255,255,139, 69,228,139, 77,232,133,192,117, 19,129,249, 85, -/* 0x01b0 */ 80, 88, 33,117, 15,131, 62, 0, 15,132,140, 0, 0, 0,235, 4, -/* 0x01c0 */ 133,201,117, 7,106,127,232, 2, 5, 0, 0, 57,193,119,245, 59, -/* 0x01d0 */ 3,119,241, 57,193,115, 86,137, 69,224,141, 69,224,255,117,236, -/* 0x01e0 */ 80,255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20,133,192, -/* 0x01f0 */ 117,210,139, 85,224, 59, 85,228,117,202,138, 69,237,132,192,116, -/* 0x0200 */ 34,133,255,116, 30,129,250, 0, 2, 0, 0,119, 4, 57, 19,117, -/* 0x0210 */ 18, 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4,255,215, -/* 0x0220 */ 131,196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4, -/* 0x0230 */ 137,240,232, 13,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41, -/* 0x0240 */ 208,133,192,137, 3,233, 68,255,255,255,141,101,244, 91, 94, 95, -/* 0x0250 */ 201,195,133,192, 83,137,195,116, 35,168, 1,117, 31,139, 3, 57, -/* 0x0260 */ 208,116, 9,131,248, 1,117, 11,133,210,116, 11,137, 19,137, 75, -/* 0x0270 */ 4,235, 9,133,192,116, 5,131,195, 8,235,225, 91,195, 85,137, -/* 0x0280 */ 229, 87, 86, 83,131,236, 60,137, 85,224,137, 69,228,139, 85, 12, -/* 0x0290 */ 139, 69, 8,199, 69,204,255,255,255,255,137, 85,216,139,125,224, -/* 0x02a0 */ 139, 85,224,137, 69,220,139, 69, 20, 3,127, 28,137, 69,212, 49, -/* 0x02b0 */ 192,102,131,122, 16, 2, 15,183, 74, 44,137,251, 15,148,192, 49, -/* 0x02c0 */ 246,193,224, 4,137,202, 5, 2, 16, 0, 0, 74,120, 30,131, 59, -/* 0x02d0 */ 1,117, 20,139, 83, 8, 59, 85,204,115, 3,137, 85,204, 3, 83, -/* 0x02e0 */ 20, 57,214,115, 2,137,214,131,195, 32,226,226,139, 93,204,106, -/* 0x02f0 */ 0,106,255,129,227, 0,240,255,255, 80, 41,222,106, 0,129,198, -/* 0x0300 */ 255, 15, 0, 0,129,230, 0,240,255,255, 86, 83,232,151, 3, 0, -/* 0x0310 */ 0,131,196, 24,141, 52, 48, 41,216,137, 69,208,139, 69,224,137, -/* 0x0320 */ 117,240,102,131,120, 44, 0,199, 69,200, 0, 0, 0, 0, 15,132, -/* 0x0330 */ 242, 1, 0, 0,139, 7,131,248, 6,117, 34,131,125,220, 0, 15, -/* 0x0340 */ 132,203, 1, 0, 0,139, 77,208,186, 3, 0, 0, 0, 3, 79, 8, -/* 0x0350 */ 139, 69,216,232,250,254,255,255,233,179, 1, 0, 0, 72, 15,133, -/* 0x0360 */ 172, 1, 0, 0,139, 95, 20,133,219, 15,132,161, 1, 0, 0,139, -/* 0x0370 */ 79, 24,199, 69,196, 64, 98, 81,115,139, 69,208, 3, 71, 8,131, -/* 0x0380 */ 225, 7,193,225, 2,139, 87, 16,211,109,196,137,193,137,198,129, -/* 0x0390 */ 225,255, 15, 0, 0,131,101,196, 7,137, 85,232, 41,206, 1,202, -/* 0x03a0 */ 131,125,220, 0,141, 28, 24,137, 69,236,137, 93,188,137, 85,192, -/* 0x03b0 */ 116, 41,106, 0,139, 69,196,106,255,104, 18, 16, 0, 0,131,200, -/* 0x03c0 */ 2, 80,137,208,131,192, 3, 80, 86,232,218, 2, 0, 0,131,196, -/* 0x03d0 */ 24, 57,198, 15,133,226, 0, 0, 0,235, 36,139, 71, 4, 41,200, -/* 0x03e0 */ 80,255,117,228,106, 18,255,117,196,255,117,192, 86,232,182, 2, -/* 0x03f0 */ 0, 0,131,196, 24, 57,198, 15,133,190, 0, 0, 0,235, 34,131, -/* 0x0400 */ 125,220, 0,116, 28,246, 69,196, 4,139, 69,212,117, 2, 49,192, -/* 0x0410 */ 80,139, 69,220,255,117,228,141, 85,232,232, 86,253,255,255, 88, -/* 0x0420 */ 90,139, 85,192,247,218,129,226,255, 15, 0, 0,246, 69,196, 2, -/* 0x0430 */ 137, 85,184,116, 21,131,125,184, 0,139, 85,192,141, 4, 22,116, -/* 0x0440 */ 9,139, 77,184,198, 0, 0, 64,226,250,131,125,220, 0,116,114, -/* 0x0450 */ 131, 63, 1,117, 83,246, 71, 24, 1,116, 77,139, 87, 20,139, 95, -/* 0x0460 */ 8,141, 12, 26, 3, 77,208, 59, 87, 16,117, 14,137,200,247,216, -/* 0x0470 */ 37,255, 15, 0, 0,131,248, 3,119, 14,107, 69,208, 52,131,127, -/* 0x0480 */ 4, 0,141, 76, 3, 12,117, 15,139, 1, 61,205,128,201,195,116, -/* 0x0490 */ 6,199, 1,205,128,201,195,133,201,116, 13,139, 69,216, 49,210, -/* 0x04a0 */ 131,224,254,232,170,253,255,255,255,117,196,255,117,192, 86,232, -/* 0x04b0 */ 53, 2, 0, 0,131,196, 12,133,192,116, 7,106,127,232, 11, 2, -/* 0x04c0 */ 0, 0,139, 69,192, 3, 69,184,141, 28, 6, 59, 93,188,115, 33, -/* 0x04d0 */ 106, 0,106,255,104, 18, 16, 0, 0,255,117,196, 41, 93,188,255, -/* 0x04e0 */ 117,188, 83,232,192, 1, 0, 0,131,196, 24, 57,195,116, 33,235, -/* 0x04f0 */ 202,131,125,220, 0,116, 25,139, 69,192,131,192, 3, 37,255, 15, -/* 0x0500 */ 0, 0,131,248, 3,119, 9, 80, 83,232,215, 1, 0, 0, 89, 91, -/* 0x0510 */ 139, 85,224,131,199, 32,255, 69,200, 15,183, 66, 44, 57, 69,200, -/* 0x0520 */ 15,140, 14,254,255,255,131,125,220, 0,117, 15,255,117,228,232, -/* 0x0530 */ 173, 1, 0, 0, 90,133,192,116, 21,235,128,139, 69,224,102,131, -/* 0x0540 */ 120, 16, 3,116, 9,255,117,240,232,127, 1, 0, 0, 88,131,125, -/* 0x0550 */ 16, 0,116, 8,139, 69,208,139, 85, 16,137, 2,139, 85,224,139, -/* 0x0560 */ 82, 24, 1, 85,208,139, 69,208,141,101,244, 91, 94, 95,201,195, -/* 0x0570 */ 85,137,229, 87, 86, 83,131,236, 16,141, 85, 24,139, 69, 8,106, -/* 0x0580 */ 0,139,125, 28,137, 69,236,139, 69, 16,139, 93, 32,141,119, 52, -/* 0x0590 */ 137, 69,232,131,192, 2,255,117,232,137, 69,228,141, 69, 32,232, -/* 0x05a0 */ 209,251,255,255,139, 69, 12,185, 0, 16, 0, 0,186, 6, 0, 0, -/* 0x05b0 */ 0,137, 69, 32,139, 69,236, 41, 93, 36,232,147,252,255,255, 15, -/* 0x05c0 */ 183, 79, 44,139, 69,236,186, 5, 0, 0, 0,232,130,252,255,255, -/* 0x05d0 */ 15,183, 79, 42,139, 69,236,186, 4, 0, 0, 0,232,113,252,255, -/* 0x05e0 */ 255,139, 77, 40, 3, 78, 8,186, 3, 0, 0, 0,139, 69,236,131, -/* 0x05f0 */ 193, 52,232, 91,252,255,255,141, 69,240,255,117,228,137,250, 80, -/* 0x0600 */ 141, 69, 32,255,117,236, 80,139, 69,232,232,111,252,255,255,186, -/* 0x0610 */ 9, 0, 0, 0,137,193,137,195,139, 69,236,232, 50,252,255,255, -/* 0x0620 */ 102,139, 79, 44,131,196, 24, 49,210,102,133,201,116,112,131, 62, -/* 0x0630 */ 3,117, 96,106, 0,139, 69,240,106, 0, 3, 70, 8, 80,232,154, -/* 0x0640 */ 0, 0, 0,131,196, 12,133,192,137,195,120, 22,104, 0, 2, 0, -/* 0x0650 */ 0, 87, 80,232,125, 0, 0, 0,131,196, 12, 61, 0, 2, 0, 0, -/* 0x0660 */ 116, 7,106,127,232,100, 0, 0, 0,141, 69,240,137,250,106, 0, -/* 0x0670 */ 80,137,216,106, 0,106, 0,232, 2,252,255,255,139, 77,240,137, -/* 0x0680 */ 195,139, 69,236,186, 7, 0, 0, 0,232,196,251,255,255,131,196, -/* 0x0690 */ 16,235, 11, 66, 15,183,193,131,198, 32, 57,194,124,144,141,101, -/* 0x06a0 */ 244,137,216, 91, 94, 95,201,195, 85,137,229, 49,192, 80,255,117, -/* 0x06b0 */ 28, 80,255,117, 24,255,117, 20,255,117, 16,255,117, 12,255,117, -/* 0x06c0 */ 8, 80,176,197, 80, 80,176,198,205,128,201,195,195,176, 1, 15, -/* 0x06d0 */ 182,192,205,128,195,176, 3,235,246,176, 4,235,242,176, 5,235, -/* 0x06e0 */ 238,176, 6,235,234,176, 73,235,230,176, 74,235,226,176, 33,235, -/* 0x06f0 */ 222,176, 20,235,218,176, 92,235,214,176, 59,235,210,176, 2,235, -/* 0x0700 */ 206,176,130,235,202,176,116,235,198,176,240,235,194,176, 10,235, -/* 0x0710 */ 190,176, 7,235,186 +/* 0x0140 */ 95,195, 0, 0, 85,137,229, 87, 86,137,199, 83,137,206,139, 15, +/* 0x0150 */ 139, 64, 4, 57,241,137,195,114, 36,133,246,116, 15,137,241,138, +/* 0x0160 */ 3, 67,136, 2, 66,226,248,139, 71, 4,139, 15, 1,240, 41,241, +/* 0x0170 */ 137, 71, 4,137, 15,141,101,244, 91, 94, 95,201,195,106,127,232, +/* 0x0180 */ 25, 6, 0, 0, 85,137,229, 87, 86,137,198, 83,137,211,131,236, +/* 0x0190 */ 24,139, 58,139, 69, 8,133,255,137, 69,220, 15,132,153, 0, 0, +/* 0x01a0 */ 0,141,125,228,137,240,185, 12, 0, 0, 0,137,250,232,146,255, +/* 0x01b0 */ 255,255,139, 69,228,133,192, 15,132,203, 0, 0, 0,139, 77,232, +/* 0x01c0 */ 133,201, 15,132,201, 0, 0, 0, 57,193, 15,135,193, 0, 0, 0, +/* 0x01d0 */ 59, 3, 15,135,185, 0, 0, 0, 57,193,115,102,137, 69,224,141, +/* 0x01e0 */ 69,224,255,117,236, 80,255,115, 4, 81,255,118, 4,255, 85,220, +/* 0x01f0 */ 131,196, 20,133,192, 15,133,150, 0, 0, 0,139, 85,228, 59, 85, +/* 0x0200 */ 224, 15,133,138, 0, 0, 0,138, 69,237,132,192,116, 19,139, 77, +/* 0x0210 */ 12,133,201,116, 12,129,250, 0, 2, 0, 0,119, 75, 57, 19,116, +/* 0x0220 */ 71,139, 69,232, 1, 70, 4, 41, 6,139, 3, 1, 83, 4, 41,208, +/* 0x0230 */ 133,192,137, 3, 15,133,106,255,255,255,141,101,244, 91, 94, 95, +/* 0x0240 */ 201,195,139, 83, 4,137,240,232,248,254,255,255,139, 85,228,139, +/* 0x0250 */ 3, 1, 83, 4, 41,208,133,192,137, 3, 15,133, 68,255,255,255, +/* 0x0260 */ 141,101,244, 91, 94, 95,201,195, 15,182,192, 80, 15,182, 69,238, +/* 0x0270 */ 80, 82,255,115, 4,255, 85, 12,139, 69,232, 1, 70, 4,131,196, +/* 0x0280 */ 16, 41, 6,139, 85,228,235,161,129,125,232, 85, 80, 88, 33,116, +/* 0x0290 */ 7,106,127,232, 5, 5, 0, 0,139, 30,133,219,116,156,235,241, +/* 0x02a0 */ 133,192, 83,137,195,116, 33,168, 1,117, 29,139, 3, 57,208,116, +/* 0x02b0 */ 18,131,248, 1,116, 20,133,192,116, 14,131,195, 8,139, 3, 57, +/* 0x02c0 */ 208,117,238,137, 19,137, 75, 4, 91,195,133,210,117,245,131,195, +/* 0x02d0 */ 8,235,234, 85,137,229, 87, 86,190, 0, 0, 0, 0, 83,131,236, +/* 0x02e0 */ 64,137, 69,228,139, 69, 8,137, 85,224,139,125,224,199, 69,204, +/* 0x02f0 */ 255,255,255,255,139, 85, 12,137, 69,220,139, 69,224,139, 77, 20, +/* 0x0300 */ 137, 85,216, 3,127, 28,139, 85,224,137, 77,212,102,131,120, 16, +/* 0x0310 */ 2, 15,183, 74, 44,137,251, 15,148,192, 15,182,192,137,202,193, +/* 0x0320 */ 224, 4, 5, 2, 16, 0, 0, 74,120, 14,131, 59, 1, 15,132,209, +/* 0x0330 */ 0, 0, 0,131,195, 32,226,242,139, 93,204,106, 0,106,255,129, +/* 0x0340 */ 227, 0,240,255,255, 80, 41,222,106, 0,129,198,255, 15, 0, 0, +/* 0x0350 */ 129,230, 0,240,255,255, 86, 83,232, 27, 4, 0, 0,139, 77,224, +/* 0x0360 */ 141, 52, 48,131,196, 24,102,139, 81, 44, 41,216,137,117,240,190, +/* 0x0370 */ 0, 0, 0, 0,102,133,210,137, 69,208,117, 20,235, 69, 72, 15, +/* 0x0380 */ 132,156, 0, 0, 0, 70, 15,183,194,131,199, 32, 57,240,126, 51, +/* 0x0390 */ 139, 7,131,248, 6,117,231,139, 69,220,133,192,116,231,139, 77, +/* 0x03a0 */ 208,186, 3, 0, 0, 0, 3, 79, 8,139, 69,216,232,239,254,255, +/* 0x03b0 */ 255,139, 69,224, 70,131,199, 32,102,139, 80, 44, 15,183,194, 57, +/* 0x03c0 */ 240,127,205,139, 77,220,133,201, 15,132, 56, 2, 0, 0,139, 85, +/* 0x03d0 */ 224,102,131,122, 16, 3,116, 9,255,117,240,232,188, 3, 0, 0, +/* 0x03e0 */ 88,139, 69, 16,133,192,116, 8,139, 69,208,139, 77, 16,137, 1, +/* 0x03f0 */ 139, 85,224,139, 82, 24, 1, 85,208,139, 69,208,141,101,244, 91, +/* 0x0400 */ 94, 95,201,195,139, 83, 8, 59, 85,204,115, 3,137, 85,204, 3, +/* 0x0410 */ 83, 20, 57,242, 15,134, 25,255,255,255,137,214,233, 18,255,255, +/* 0x0420 */ 255,139, 95, 20,133,219, 15,132, 89,255,255,255,139, 69,208,199, +/* 0x0430 */ 69,200, 64, 98, 81,115, 3, 71, 8,139, 79, 24,139, 87, 16,131, +/* 0x0440 */ 225, 7, 1,195,193,225, 2,137, 93,188,211,109,200,137,193,139, +/* 0x0450 */ 93,220,129,225,255, 15, 0, 0,131,101,200, 7,137, 85,232, 1, +/* 0x0460 */ 202,137, 69,236, 41,200,133,219,137, 85,196,137, 69,192, 15,132, +/* 0x0470 */ 104, 1, 0, 0,106, 0,139, 69,200,106,255,104, 18, 16, 0, 0, +/* 0x0480 */ 131,200, 2, 80,137,208,131,192, 3, 80,255,117,192,232,230, 2, +/* 0x0490 */ 0, 0,131,196, 24, 59, 69,192, 15,133,204, 0, 0, 0,139, 77, +/* 0x04a0 */ 220,133,201,116, 31,246, 69,200, 4,139, 69,212,117, 5,184, 0, +/* 0x04b0 */ 0, 0, 0, 80,139, 69,220,255,117,228,141, 85,232,232,194,252, +/* 0x04c0 */ 255,255, 88, 90,139, 93,196,247,219,129,227,255, 15, 0, 0,246, +/* 0x04d0 */ 69,200, 2,116, 14,139, 69,192, 3, 69,196,133,219, 15,133,142, +/* 0x04e0 */ 0, 0, 0,139, 69,220,133,192,116, 30,131, 63, 1, 15,132,139, +/* 0x04f0 */ 0, 0, 0,255,117,200,255,117,196,255,117,192,232,184, 2, 0, +/* 0x0500 */ 0,131,196, 12,133,192,117, 98,139, 69,196, 1,216,139, 93,192, +/* 0x0510 */ 1,195, 59, 93,188,114, 48,139, 69,220,133,192,116, 29,139, 69, +/* 0x0520 */ 196,131,192, 3, 37,255, 15, 0, 0,131,248, 3, 15,135,127,254, +/* 0x0530 */ 255,255, 80, 83,232,124, 2, 0, 0, 91, 88,139, 77,224,102,139, +/* 0x0540 */ 81, 44,233, 62,254,255,255,106, 0,106,255,104, 18, 16, 0, 0, +/* 0x0550 */ 255,117,200, 41, 93,188,255,117,188, 83,232, 25, 2, 0, 0,131, +/* 0x0560 */ 196, 24, 57,216, 15,132, 71,254,255,255,106,127,232, 44, 2, 0, +/* 0x0570 */ 0,137,217,198, 0, 0, 64,226,250,233,101,255,255,255,246, 71, +/* 0x0580 */ 24, 1, 15,132,107,255,255,255,139, 87, 20,139, 79, 8,137, 77, +/* 0x0590 */ 184, 1,209,137, 77,180, 3, 77,208, 59, 87, 16,116,126,107, 69, +/* 0x05a0 */ 208, 52,139, 85,184,141, 76, 2, 12,139, 71, 4,133,192,117, 15, +/* 0x05b0 */ 139, 1, 61,205,128,201,195,116, 6,199, 1,205,128,201,195,133, +/* 0x05c0 */ 201, 15,132, 44,255,255,255,139, 69,216,186, 0, 0, 0, 0,131, +/* 0x05d0 */ 224,254,232,201,252,255,255,233, 23,255,255,255,139, 71, 4, 41, +/* 0x05e0 */ 200, 80,255,117,228,106, 18,255,117,200,255,117,196,255,117,192, +/* 0x05f0 */ 232,131, 1, 0, 0,131,196, 24, 59, 69,192, 15,132,195,254,255, +/* 0x0600 */ 255,233,100,255,255,255,255,117,228,232,163, 1, 0, 0, 90,133, +/* 0x0610 */ 192, 15,132,202,253,255,255,233, 78,255,255,255,137,200,247,216, +/* 0x0620 */ 37,255, 15, 0, 0,131,248, 3,119,134,233,111,255,255,255, 85, +/* 0x0630 */ 137,229, 87, 86, 83,131,236, 16,141, 85, 24,139, 69, 8,106, 0, +/* 0x0640 */ 139,117, 16,137, 69,236,139, 69, 28, 86,139, 93, 32,137, 69,228, +/* 0x0650 */ 137,199,141, 70, 2,131,199, 52,137, 69,232,141, 69, 32,232, 33, +/* 0x0660 */ 251,255,255,139, 69, 12,185, 0, 16, 0, 0,186, 6, 0, 0, 0, +/* 0x0670 */ 137, 69, 32,139, 69,236, 41, 93, 36,232, 34,252,255,255,139, 69, +/* 0x0680 */ 228,186, 5, 0, 0, 0, 15,183, 72, 44,139, 69,236,232, 14,252, +/* 0x0690 */ 255,255,139, 69,228,186, 4, 0, 0, 0, 15,183, 72, 42,139, 69, +/* 0x06a0 */ 236,232,250,251,255,255,139, 77, 40, 3, 79, 8,186, 3, 0, 0, +/* 0x06b0 */ 0,139, 69,236,131,193, 52,232,228,251,255,255,141, 69,240,255, +/* 0x06c0 */ 117,232, 80,139, 85,228,255,117,236,141, 69, 32, 80,137,240,232, +/* 0x06d0 */ 255,251,255,255,186, 9, 0, 0, 0,137,193,137,195,139, 69,236, +/* 0x06e0 */ 232,187,251,255,255,139, 69,228,131,196, 24,186, 0, 0, 0, 0, +/* 0x06f0 */ 102,139, 72, 44,102,133,201,116, 16,131, 63, 3,116, 21, 66, 15, +/* 0x0700 */ 183,193,131,199, 32, 57,208,127,240,141,101,244,137,216, 91, 94, +/* 0x0710 */ 95,201,195,106, 0,139, 69,240,106, 0, 3, 71, 8, 80,232,138, +/* 0x0720 */ 0, 0, 0,131,196, 12,133,192,137,195,120, 24,104, 0, 2, 0, +/* 0x0730 */ 0,255,117,228, 80,232,107, 0, 0, 0,131,196, 12, 61, 0, 2, +/* 0x0740 */ 0, 0,116, 7,106,127,232, 82, 0, 0, 0,141, 69,240,139, 85, +/* 0x0750 */ 228,106, 0, 80,137,216,106, 0,106, 0,232,116,251,255,255,139, +/* 0x0760 */ 77,240,137,195,139, 69,236,186, 7, 0, 0, 0,232, 47,251,255, +/* 0x0770 */ 255,131,196, 16,235,147, 0, 0, 85,137,229, 49,192, 80,255,117, +/* 0x0780 */ 28, 80,255,117, 24,255,117, 20,255,117, 16,255,117, 12,255,117, +/* 0x0790 */ 8, 80,176,197, 80, 80,176,198,205,128,201,195,195,176, 1, 15, +/* 0x07a0 */ 182,192,205,128,195,176, 3,235,246,176, 4,235,242,176, 5,235, +/* 0x07b0 */ 238,176, 6,235,234,176, 73,235,230,176, 74,235,226,176, 33,235, +/* 0x07c0 */ 222,176, 20,235,218,176, 92,235,214,176, 59,235,210,176, 2,235, +/* 0x07d0 */ 206,176,130,235,202,176,116,235,198,176,240,235,194,176, 10,235, +/* 0x07e0 */ 190,176, 7,235,186 }; diff --git a/src/stub/i386-openbsd.elf-fold.h b/src/stub/i386-openbsd.elf-fold.h index a2bada12..f7e1bc9b 100644 --- a/src/stub/i386-openbsd.elf-fold.h +++ b/src/stub/i386-openbsd.elf-fold.h @@ -1,5 +1,5 @@ /* i386-openbsd.elf-fold.h - created from i386-openbsd.elf-fold.bin, 2041 (0x7f9) bytes + created from i386-openbsd.elf-fold.bin, 2257 (0x8d1) bytes This file is part of the UPX executable compressor. @@ -32,17 +32,17 @@ /* clang-format off */ -#define STUB_I386_OPENBSD_ELF_FOLD_SIZE 2041 -#define STUB_I386_OPENBSD_ELF_FOLD_ADLER32 0xd82f6816 -#define STUB_I386_OPENBSD_ELF_FOLD_CRC32 0x8c403cd5 +#define STUB_I386_OPENBSD_ELF_FOLD_SIZE 2257 +#define STUB_I386_OPENBSD_ELF_FOLD_ADLER32 0xf505de87 +#define STUB_I386_OPENBSD_ELF_FOLD_CRC32 0x63002e21 -unsigned char stub_i386_openbsd_elf_fold[2041] = { +unsigned char stub_i386_openbsd_elf_fold[2257] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, -/* 0x0040 */ 0, 16,192, 0,249, 7, 0, 0,252, 7, 0, 0, 5, 0, 0, 0, -/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,249, 7, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 16,192, 0,209, 8, 0, 0,212, 8, 0, 0, 5, 0, 0, 0, +/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,209, 8, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 41,201,186,248, 2, 0, 0,137,230,137,231,232,134, 0, 0, 0, @@ -51,118 +51,132 @@ unsigned char stub_i386_openbsd_elf_fold[2041] = { /* 0x00b0 */ 141,148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192, /* 0x00c0 */ 102,131,123, 16, 3,117, 1,146, 80,139, 67, 24,139,112,248, 41, /* 0x00d0 */ 240,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, 71,232, -/* 0x00e0 */ 90, 5, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 90, +/* 0x00e0 */ 32, 6, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, 0, 90, /* 0x00f0 */ 193,226, 12, 1,211, 80,106, 0,137,229, 41,217, 41,192, 81, 83, /* 0x0100 */ 80, 79, 60,175,175,117,252,255, 55, 49,255, 49,246, 49,210, 49, /* 0x0110 */ 201, 49,219,176, 73,195,173,171,173,171,133,192,117,250,173,171, /* 0x0120 */ 133,192,117,250, 87,173,171,131,248, 32,115, 3, 15,179,194,133, /* 0x0130 */ 192,173,171,117,240,131,239, 8, 1,201, 64,243,171, 72,171,171, -/* 0x0140 */ 95,195, 0, 0, 85,137,229, 87, 86,137,206, 83,137,195, 57, 8, -/* 0x0150 */ 139,120, 4,115, 7,106,127,232, 85, 6, 0, 0,133,201,116, 8, -/* 0x0160 */ 138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, 51,141,101,244, -/* 0x0170 */ 91, 94, 95,201,195, 85,137,229, 87, 86,137,198, 83,137,211,131, -/* 0x0180 */ 236, 24,139, 69, 8,139,125, 12,137, 69,220,131, 58, 0, 15,132, -/* 0x0190 */ 182, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0,137,240,232,161, -/* 0x01a0 */ 255,255,255,139, 69,228,139, 77,232,133,192,117, 19,129,249, 85, -/* 0x01b0 */ 80, 88, 33,117, 15,131, 62, 0, 15,132,140, 0, 0, 0,235, 4, -/* 0x01c0 */ 133,201,117, 7,106,127,232,230, 5, 0, 0, 57,193,119,245, 59, -/* 0x01d0 */ 3,119,241, 57,193,115, 86,137, 69,224,141, 69,224,255,117,236, -/* 0x01e0 */ 80,255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20,133,192, -/* 0x01f0 */ 117,210,139, 85,224, 59, 85,228,117,202,138, 69,237,132,192,116, -/* 0x0200 */ 34,133,255,116, 30,129,250, 0, 2, 0, 0,119, 4, 57, 19,117, -/* 0x0210 */ 18, 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4,255,215, -/* 0x0220 */ 131,196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4, -/* 0x0230 */ 137,240,232, 13,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41, -/* 0x0240 */ 208,133,192,137, 3,233, 68,255,255,255,141,101,244, 91, 94, 95, -/* 0x0250 */ 201,195,133,192, 83,137,195,116, 35,168, 1,117, 31,139, 3, 57, -/* 0x0260 */ 208,116, 9,131,248, 1,117, 11,133,210,116, 11,137, 19,137, 75, -/* 0x0270 */ 4,235, 9,133,192,116, 5,131,195, 8,235,225, 91,195, 85,137, -/* 0x0280 */ 229, 87, 86, 83,131,236,104,137, 69,200,139, 69, 12,137, 85,196, -/* 0x0290 */ 139, 77, 24,199, 69,228, 0, 0, 0, 0,137, 69,192,139, 69,196, -/* 0x02a0 */ 137, 77,184,139, 93,196,139,117,196,199, 69,232, 0, 0, 0, 0, -/* 0x02b0 */ 15,183, 72, 44,199, 69,220, 0, 0, 0, 0,139, 85, 16,199, 69, -/* 0x02c0 */ 224, 0, 0, 0, 0, 3, 91, 28,199, 69,236,255,255,255,255, 15, -/* 0x02d0 */ 183,118, 16,137, 85,188,137,202,199, 69,240,255,255,255,255, 74, -/* 0x02e0 */ 137, 93,180,137,117,176,199, 69,148, 0, 0, 0, 0,120, 62,137, -/* 0x02f0 */ 206,131, 59, 1,117, 49,139, 67, 24,139, 75, 8,131,224, 1,141, -/* 0x0300 */ 20,133, 0, 0, 0, 0, 57, 76, 42,236,118, 11,139, 67, 16,137, -/* 0x0310 */ 76, 42,236,137, 68, 21,228,139, 67, 20,141,125,220, 1,200, 57, -/* 0x0320 */ 4, 58,115, 3,137, 4, 58,131,195, 32, 78,117,196,131,125,176, -/* 0x0330 */ 2,116, 63,129,125,220,255,255,255, 31,118, 54,139, 77, 8,139, -/* 0x0340 */ 93, 8,139, 65, 4,137,194,137,193,139, 3,129,225,255,255,255, -/* 0x0350 */ 3,129,226, 0, 0, 0,252, 37,255,255,255, 3, 57,193,118, 2, -/* 0x0360 */ 137,200,141,148, 2,255, 15, 0, 0,129,226, 0,240,255,255,137, -/* 0x0370 */ 85,148,139,117, 8, 49,255,199, 69,144, 1, 0, 0, 0,137,117, -/* 0x0380 */ 152,141, 69,236,139, 85,148,139,117,152,139, 28, 7,137,217,129, -/* 0x0390 */ 227, 0,240,255,255,129,225,255, 15, 0, 0, 3, 76, 47,228,137, -/* 0x03a0 */ 28, 7,139, 68, 47,220, 1,194, 41,216,137, 22, 3, 93,148,106, -/* 0x03b0 */ 0, 5,255, 15, 0, 0,106,255, 37, 0,240,255,255,104, 18, 16, -/* 0x03c0 */ 0, 0,129,193,255, 15, 0, 0,106, 0,129,225, 0,240,255,255, -/* 0x03d0 */ 80,131,198, 4, 83,137, 68, 47,220,137, 76, 47,228,232,170, 3, -/* 0x03e0 */ 0, 0,137, 68, 61,212,131,196, 24,131,199, 4,255, 77,144,137, -/* 0x03f0 */ 117,152,121,141,139, 69,212,199, 69,168, 0, 0, 0, 0,139, 85, -/* 0x0400 */ 236,139, 77,196, 41,208,102,131,121, 44, 0,137, 69,172, 15,132, -/* 0x0410 */ 245, 1, 0, 0,139, 93,180,139, 3,131,248, 6,117, 34,131,125, -/* 0x0420 */ 192, 0, 15,132,202, 1, 0, 0,139, 77,172,186, 3, 0, 0, 0, -/* 0x0430 */ 3, 75, 8,139, 69,188,232, 23,254,255,255,233,178, 1, 0, 0, -/* 0x0440 */ 72, 15,133,171, 1, 0, 0,139,117,180,139, 86, 20,133,210, 15, -/* 0x0450 */ 132,157, 1, 0, 0,139, 69,172,199, 69,164, 64, 98, 81,115, 3, -/* 0x0460 */ 70, 8,139, 78, 24,141, 20, 16,131,225, 7,193,225, 2,137, 69, -/* 0x0470 */ 208,211,109,164,137, 85,156,139, 78, 16,137,194,131,101,164, 7, -/* 0x0480 */ 129,226,255, 15, 0, 0,137, 77,204,141, 52, 17,139, 77,180, 41, -/* 0x0490 */ 208,137, 69,160,139, 65, 4, 41,208,131,125,192, 0, 80,139, 69, -/* 0x04a0 */ 200,116, 3,131,200,255,131,125,192, 1, 80, 25,192, 37, 0,240, -/* 0x04b0 */ 255,255, 5, 18, 16, 0, 0,131,125,192, 0, 80,139, 69,164,116, -/* 0x04c0 */ 3,131,200, 2,131,125,192, 0, 80,137,240,116, 3,141, 70, 3, -/* 0x04d0 */ 80,255,117,160,232,179, 2, 0, 0,131,196, 24, 57, 69,160, 15, -/* 0x04e0 */ 133,188, 0, 0, 0,131,125,192, 0,116, 28,246, 69,164, 4,139, -/* 0x04f0 */ 69,184,117, 2, 49,192, 80,139, 69,192,255,117,200,141, 85,204, -/* 0x0500 */ 232,112,252,255,255, 95, 88,137,247,247,223,129,231,255, 15, 0, -/* 0x0510 */ 0,246, 69,164, 2,116, 17,139, 69,160, 1,240,133,255,116, 8, -/* 0x0520 */ 137,249,198, 0, 0, 64,226,250,131,125,192, 0,116,122,139, 93, -/* 0x0530 */ 180,131, 59, 1,117, 88,246, 67, 24, 1,116, 82,139, 83, 20,137, -/* 0x0540 */ 216,139, 91, 8,141, 12, 26, 3, 77,172, 59, 80, 16,117, 14,137, -/* 0x0550 */ 200,247,216, 37,255, 15, 0, 0,131,248, 3,119, 17,139, 85,180, -/* 0x0560 */ 107, 69,172, 52,131,122, 4, 0,141, 76, 3, 12,117, 15,139, 1, -/* 0x0570 */ 61,205,128,201,195,116, 6,199, 1,205,128,201,195,133,201,116, -/* 0x0580 */ 13,139, 69,188, 49,210,131,224,254,232,196,252,255,255,255,117, -/* 0x0590 */ 164, 86,255,117,160,232, 51, 2, 0, 0,131,196, 12,133,192,116, -/* 0x05a0 */ 7,106,127,232, 9, 2, 0, 0,141, 4, 62,139, 93,160, 1,195, -/* 0x05b0 */ 59, 93,156,115, 33,106, 0,106,255,104, 18, 16, 0, 0,255,117, -/* 0x05c0 */ 164, 41, 93,156,255,117,156, 83,232,191, 1, 0, 0,131,196, 24, -/* 0x05d0 */ 57,195,116, 30,235,203,131,125,192, 0,116, 22,141, 70, 3, 37, -/* 0x05e0 */ 255, 15, 0, 0,131,248, 3,119, 9, 80, 83,232,217, 1, 0, 0, -/* 0x05f0 */ 89, 91,139, 77,196,255, 69,168, 15,183, 65, 44,131, 69,180, 32, -/* 0x0600 */ 57, 69,168, 15,140, 11,254,255,255,131,125,192, 0,117, 13,255, -/* 0x0610 */ 117,200,232,174, 1, 0, 0, 90,133,192,117,133,131,125, 20, 0, -/* 0x0620 */ 116, 8,139,117,172,139, 93, 20,137, 51,139, 69,196,139, 64, 24, -/* 0x0630 */ 1, 69,172,139, 69,172,141,101,244, 91, 94, 95,201,195, 85,137, -/* 0x0640 */ 229, 87, 86, 83,131,236, 24,141, 85, 24,139, 69, 8,106, 0,139, -/* 0x0650 */ 125, 28,199, 69,232, 0, 0, 0, 0,137, 69,228,139, 69, 16,139, -/* 0x0660 */ 93, 32,199, 69,236, 0, 0, 0, 0,137, 69,224,131,192, 2,255, -/* 0x0670 */ 117,224,137, 69,220,141, 69, 32,141,119, 52,232,245,250,255,255, -/* 0x0680 */ 139, 69, 12,185, 0, 16, 0, 0,186, 6, 0, 0, 0,137, 69, 32, -/* 0x0690 */ 139, 69,228, 41, 93, 36,232,183,251,255,255, 15,183, 79, 44,139, -/* 0x06a0 */ 69,228,186, 5, 0, 0, 0,232,166,251,255,255, 15,183, 79, 42, -/* 0x06b0 */ 139, 69,228,186, 4, 0, 0, 0,232,149,251,255,255,139, 77, 40, -/* 0x06c0 */ 3, 78, 8,186, 3, 0, 0, 0,139, 69,228,131,193, 52,232,127, -/* 0x06d0 */ 251,255,255,141, 69,240,255,117,220,137,250, 80,141, 69, 32,255, -/* 0x06e0 */ 117,228, 80,141, 69,232, 80,139, 69,224,232,143,251,255,255,186, -/* 0x06f0 */ 9, 0, 0, 0,137,193,137,195,139, 69,228,232, 82,251,255,255, -/* 0x0700 */ 102,139, 79, 44,131,196, 28, 49,210,102,133,201,116,116,131, 62, -/* 0x0710 */ 3,117,100,106, 0,139, 69,240,106, 0, 3, 70, 8, 80,232,158, -/* 0x0720 */ 0, 0, 0,131,196, 12,133,192,137,195,120, 22,104, 0, 2, 0, -/* 0x0730 */ 0, 87, 80,232,129, 0, 0, 0,131,196, 12, 61, 0, 2, 0, 0, -/* 0x0740 */ 116, 7,106,127,232,104, 0, 0, 0,141, 69,240,137,250,106, 0, -/* 0x0750 */ 80,106, 0,141, 69,232,106, 0, 80,137,216,232, 30,251,255,255, -/* 0x0760 */ 139, 77,240,137,195,139, 69,228,186, 7, 0, 0, 0,232,224,250, -/* 0x0770 */ 255,255,131,196, 20,235, 11, 66, 15,183,193,131,198, 32, 57,194, -/* 0x0780 */ 124,140,141,101,244,137,216, 91, 94, 95,201,195, 85,137,229, 49, -/* 0x0790 */ 192, 80,255,117, 28, 80,255,117, 24,255,117, 20,255,117, 16,255, -/* 0x07a0 */ 117, 12,255,117, 8, 80,176,197, 80, 80,176,198,205,128,201,195, -/* 0x07b0 */ 195,176, 1, 15,182,192,205,128,195,176, 3,235,246,176, 4,235, -/* 0x07c0 */ 242,176, 5,235,238,176, 6,235,234,176, 73,235,230,176, 74,235, -/* 0x07d0 */ 226,176, 33,235,222,176, 20,235,218,176, 92,235,214,176, 59,235, -/* 0x07e0 */ 210,176, 2,235,206,176,130,235,202,176,116,235,198,176,240,235, -/* 0x07f0 */ 194,176, 10,235,190,176, 7,235,186 +/* 0x0140 */ 95,195, 0, 0, 85,137,229, 87, 86,137,199, 83,137,206,139, 15, +/* 0x0150 */ 139, 64, 4, 57,241,137,195,114, 36,133,246,116, 15,137,241,138, +/* 0x0160 */ 3, 67,136, 2, 66,226,248,139, 71, 4,139, 15, 1,240, 41,241, +/* 0x0170 */ 137, 71, 4,137, 15,141,101,244, 91, 94, 95,201,195,106,127,232, +/* 0x0180 */ 5, 7, 0, 0, 85,137,229, 87, 86,137,198, 83,137,211,131,236, +/* 0x0190 */ 24,139, 58,139, 69, 8,133,255,137, 69,220, 15,132,153, 0, 0, +/* 0x01a0 */ 0,141,125,228,137,240,185, 12, 0, 0, 0,137,250,232,146,255, +/* 0x01b0 */ 255,255,139, 69,228,133,192, 15,132,203, 0, 0, 0,139, 77,232, +/* 0x01c0 */ 133,201, 15,132,201, 0, 0, 0, 57,193, 15,135,193, 0, 0, 0, +/* 0x01d0 */ 59, 3, 15,135,185, 0, 0, 0, 57,193,115,102,137, 69,224,141, +/* 0x01e0 */ 69,224,255,117,236, 80,255,115, 4, 81,255,118, 4,255, 85,220, +/* 0x01f0 */ 131,196, 20,133,192, 15,133,150, 0, 0, 0,139, 85,228, 59, 85, +/* 0x0200 */ 224, 15,133,138, 0, 0, 0,138, 69,237,132,192,116, 19,139, 77, +/* 0x0210 */ 12,133,201,116, 12,129,250, 0, 2, 0, 0,119, 75, 57, 19,116, +/* 0x0220 */ 71,139, 69,232, 1, 70, 4, 41, 6,139, 3, 1, 83, 4, 41,208, +/* 0x0230 */ 133,192,137, 3, 15,133,106,255,255,255,141,101,244, 91, 94, 95, +/* 0x0240 */ 201,195,139, 83, 4,137,240,232,248,254,255,255,139, 85,228,139, +/* 0x0250 */ 3, 1, 83, 4, 41,208,133,192,137, 3, 15,133, 68,255,255,255, +/* 0x0260 */ 141,101,244, 91, 94, 95,201,195, 15,182,192, 80, 15,182, 69,238, +/* 0x0270 */ 80, 82,255,115, 4,255, 85, 12,139, 69,232, 1, 70, 4,131,196, +/* 0x0280 */ 16, 41, 6,139, 85,228,235,161,129,125,232, 85, 80, 88, 33,116, +/* 0x0290 */ 7,106,127,232,241, 5, 0, 0,139, 30,133,219,116,156,235,241, +/* 0x02a0 */ 133,192, 83,137,195,116, 33,168, 1,117, 29,139, 3, 57,208,116, +/* 0x02b0 */ 18,131,248, 1,116, 20,133,192,116, 14,131,195, 8,139, 3, 57, +/* 0x02c0 */ 208,117,238,137, 19,137, 75, 4, 91,195,133,210,117,245,131,195, +/* 0x02d0 */ 8,235,234, 85,137,229, 87, 86, 83,131,236,108,137, 85,196,139, +/* 0x02e0 */ 77, 24,137, 69,200,139, 93,196,199, 69,228, 0, 0, 0, 0,139, +/* 0x02f0 */ 69, 12,137, 77,184,139, 77,196,199, 69,232, 0, 0, 0, 0, 15, +/* 0x0300 */ 183, 91, 16,137, 69,192,139,125,196,199, 69,220, 0, 0, 0, 0, +/* 0x0310 */ 15,183, 65, 44,199, 69,224, 0, 0, 0, 0, 3,127, 28,137, 93, +/* 0x0320 */ 180,139, 85, 16,199, 69,236,255,255,255,255,137,195,199, 69,240, +/* 0x0330 */ 255,255,255,255, 75,137, 85,188,199, 69,148, 0, 0, 0, 0,137, +/* 0x0340 */ 250,120, 15,131, 58, 1, 15,132,114, 1, 0, 0,131,194, 32, 75, +/* 0x0350 */ 121,241,131,125,180, 2,116, 60,129,125,220,255,255,255, 31,118, +/* 0x0360 */ 51,139, 93, 8,139, 67, 4,137,193,137,194,139, 3,129,226,255, +/* 0x0370 */ 255,255, 3,129,225, 0, 0, 0,252, 37,255,255,255, 3, 57,194, +/* 0x0380 */ 118, 2,137,208,141,140, 1,255, 15, 0, 0,129,225, 0,240,255, +/* 0x0390 */ 255,137, 77,148,199, 69,172, 0, 0, 0, 0,139,117,172,139, 85, +/* 0x03a0 */ 148,193,230, 2,139, 92, 46,236,139, 68, 46,220,137,217,129,227, +/* 0x03b0 */ 0,240,255,255,137, 69,140, 1,194,137, 93,144,139, 69, 8,137, +/* 0x03c0 */ 92, 46,236,139, 93,172,129,225,255, 15, 0, 0,137, 20,152,139, +/* 0x03d0 */ 85,144, 41, 85,140,106, 0,139, 69,140,106,255, 3, 76, 46,228, +/* 0x03e0 */ 137,211,104, 18, 16, 0, 0, 3, 93,148, 5,255, 15, 0, 0, 37, +/* 0x03f0 */ 0,240,255,255,106, 0, 80,129,193,255, 15, 0, 0,129,225, 0, +/* 0x0400 */ 240,255,255, 83,137, 68, 46,220,137, 76, 46,228,232, 83, 4, 0, +/* 0x0410 */ 0,255, 69,172,131,196, 24,131,125,172, 1,137, 68, 46,212, 15, +/* 0x0420 */ 142,118,255,255,255,139, 69,196,199, 69,168, 0, 0, 0, 0,139, +/* 0x0430 */ 77,212,139, 93,236,102,139, 80, 44, 41,217,102,133,210,137, 77, +/* 0x0440 */ 176,117, 23,235, 75, 72, 15,132,174, 0, 0, 0,255, 69,168, 15, +/* 0x0450 */ 183,194,131,199, 32, 59, 69,168,126, 54,139, 7,131,248, 6,117, +/* 0x0460 */ 228,139, 93,192,133,219,116,228,139, 77,176,186, 3, 0, 0, 0, +/* 0x0470 */ 3, 79, 8,139, 69,188,232, 37,254,255,255,139, 77,196,131,199, +/* 0x0480 */ 32,255, 69,168,102,139, 81, 44, 15,183,194, 59, 69,168,127,202, +/* 0x0490 */ 139, 77,192,133,201, 15,132, 65, 2, 0, 0,139, 69, 20,133,192, +/* 0x04a0 */ 116, 8,139, 69,176,139, 93, 20,137, 3,139, 85,196,139, 82, 24, +/* 0x04b0 */ 1, 85,176,139, 69,176,141,101,244, 91, 94, 95,201,195,139, 66, +/* 0x04c0 */ 24,139, 74, 8,131,224, 1,141, 52,133, 0, 0, 0, 0, 57, 76, +/* 0x04d0 */ 46,236,118, 11,139, 66, 16,137, 76, 46,236,137, 68, 46,228,139, +/* 0x04e0 */ 66, 20, 1,200, 57, 68, 46,220, 15,131, 94,254,255,255,131,194, +/* 0x04f0 */ 32,137, 68, 46,220,233, 85,254,255,255,139, 95, 20,133,219, 15, +/* 0x0500 */ 132, 71,255,255,255,139, 69,176,199, 69,164, 64, 98, 81,115, 3, +/* 0x0510 */ 71, 8,139, 79, 24,131,225, 7,137,194,193,225, 2,129,226,255, +/* 0x0520 */ 15, 0, 0,211,109,164, 1,195,139, 79, 16,137, 69,208, 41,208, +/* 0x0530 */ 131,101,164, 7,137, 77,204,141, 52, 17,139, 77,192,137, 69,160, +/* 0x0540 */ 139, 71, 4,137, 93,156, 41,208,133,201, 80,139, 69,200,116, 5, +/* 0x0550 */ 184,255,255,255,255,131,125,192, 1, 80,139, 85,192, 25,192, 37, +/* 0x0560 */ 0,240,255,255, 5, 18, 16, 0, 0,133,210, 80,139, 69,164,116, +/* 0x0570 */ 3,131,200, 2,139, 93,192, 80,137,240,133,219,116, 3,141, 70, +/* 0x0580 */ 3, 80,255,117,160,232,218, 2, 0, 0,131,196, 24, 59, 69,160, +/* 0x0590 */ 15,133, 87, 1, 0, 0,139, 77,192,133,201,116, 31,246, 69,164, +/* 0x05a0 */ 4,139, 69,184,117, 5,184, 0, 0, 0, 0, 80,139, 69,192,255, +/* 0x05b0 */ 117,200,141, 85,204,232,202,251,255,255, 88, 90,137,243,247,219, +/* 0x05c0 */ 129,227,255, 15, 0, 0,246, 69,164, 2,116, 13,139, 69,160, 1, +/* 0x05d0 */ 240,133,219, 15,133,141, 0, 0, 0,139, 69,192,133,192,116, 32, +/* 0x05e0 */ 131, 63, 1, 15,132,138, 0, 0, 0,255,117,164, 86,255,117,160, +/* 0x05f0 */ 232,176, 2, 0, 0,131,196, 12,133,192, 15,133,237, 0, 0, 0, +/* 0x0600 */ 141, 4, 30,139, 93,160, 1,195, 59, 93,156,114, 42,139, 69,192, +/* 0x0610 */ 133,192, 15,132,184, 0, 0, 0,141, 70, 3, 37,255, 15, 0, 0, +/* 0x0620 */ 131,248, 3, 15,135, 82,254,255,255, 80, 83,232,113, 2, 0, 0, +/* 0x0630 */ 91, 94,233, 68,254,255,255,106, 0,106,255,104, 18, 16, 0, 0, +/* 0x0640 */ 255,117,164, 41, 93,156,255,117,156, 83,232, 21, 2, 0, 0,131, +/* 0x0650 */ 196, 24, 57,216, 15,133,147, 0, 0, 0,139, 93,196,102,139, 83, +/* 0x0660 */ 44,233,230,253,255,255,137,217,198, 0, 0, 64,226,250,233,102, +/* 0x0670 */ 255,255,255,246, 71, 24, 1, 15,132,108,255,255,255,139, 87, 20, +/* 0x0680 */ 139, 71, 8,137, 69,152, 1,208,137,193, 3, 77,176, 59, 87, 16, +/* 0x0690 */ 116, 98,107, 69,176, 52,139, 85,152,141, 76, 2, 12,139, 71, 4, +/* 0x06a0 */ 133,192,117, 15,139, 1, 61,205,128,201,195,116, 6,199, 1,205, +/* 0x06b0 */ 128,201,195,133,201, 15,132, 46,255,255,255,139, 69,188,186, 0, +/* 0x06c0 */ 0, 0, 0,131,224,254,232,213,251,255,255,233, 25,255,255,255, +/* 0x06d0 */ 139, 69,196,102,139, 80, 44,233,112,253,255,255,255,117,200,232, +/* 0x06e0 */ 185, 1, 0, 0, 90,133,192, 15,132,174,253,255,255,106,127,232, +/* 0x06f0 */ 149, 1, 0, 0,137,200,247,216, 37,255, 15, 0, 0,131,248, 3, +/* 0x0700 */ 119,162,235,142, 85,137,229, 87, 86, 83,131,236, 24,141, 85, 24, +/* 0x0710 */ 139, 69, 8,106, 0,139,117, 16,199, 69,232, 0, 0, 0, 0,137, +/* 0x0720 */ 69,228,139, 69, 28, 86,139, 93, 32,137, 69,220,137,199,141, 70, +/* 0x0730 */ 2,131,199, 52,199, 69,236, 0, 0, 0, 0,137, 69,224,141, 69, +/* 0x0740 */ 32,232, 62,250,255,255,139, 69, 12,185, 0, 16, 0, 0,186, 6, +/* 0x0750 */ 0, 0, 0,137, 69, 32,139, 69,228, 41, 93, 36,232, 63,251,255, +/* 0x0760 */ 255,139, 69,220,186, 5, 0, 0, 0, 15,183, 72, 44,139, 69,228, +/* 0x0770 */ 232, 43,251,255,255,139, 69,220,186, 4, 0, 0, 0, 15,183, 72, +/* 0x0780 */ 42,139, 69,228,232, 23,251,255,255,139, 77, 40, 3, 79, 8,186, +/* 0x0790 */ 3, 0, 0, 0,139, 69,228,131,193, 52,232, 1,251,255,255,141, +/* 0x07a0 */ 69,240,255,117,224, 80,139, 85,220,141, 69, 32,255,117,228, 80, +/* 0x07b0 */ 141, 69,232, 80,137,240,232, 24,251,255,255,186, 9, 0, 0, 0, +/* 0x07c0 */ 137,193,137,195,139, 69,228,232,212,250,255,255,139, 69,220,131, +/* 0x07d0 */ 196, 28,186, 0, 0, 0, 0,102,139, 72, 44,102,133,201,116, 16, +/* 0x07e0 */ 131, 63, 3,116, 21, 66, 15,183,193,131,199, 32, 57,208,127,240, +/* 0x07f0 */ 141,101,244,137,216, 91, 94, 95,201,195,106, 0,139, 69,240,106, +/* 0x0800 */ 0, 3, 71, 8, 80,232,143, 0, 0, 0,131,196, 12,133,192,137, +/* 0x0810 */ 195,120, 24,104, 0, 2, 0, 0,255,117,220, 80,232,112, 0, 0, +/* 0x0820 */ 0,131,196, 12, 61, 0, 2, 0, 0,116, 7,106,127,232, 87, 0, +/* 0x0830 */ 0, 0,141, 69,240,139, 85,220,106, 0, 80,106, 0,141, 69,232, +/* 0x0840 */ 106, 0, 80,137,216,232,137,250,255,255,139, 77,240,137,195,139, +/* 0x0850 */ 69,228,186, 7, 0, 0, 0,232, 68,250,255,255,131,196, 20,235, +/* 0x0860 */ 143, 0, 0, 0, 85,137,229, 49,192, 80,255,117, 28, 80,255,117, +/* 0x0870 */ 24,255,117, 20,255,117, 16,255,117, 12,255,117, 8, 80,176,197, +/* 0x0880 */ 80, 80,176,198,205,128,201,195,195,176, 1, 15,182,192,205,128, +/* 0x0890 */ 195,176, 3,235,246,176, 4,235,242,176, 5,235,238,176, 6,235, +/* 0x08a0 */ 234,176, 73,235,230,176, 74,235,226,176, 33,235,222,176, 20,235, +/* 0x08b0 */ 218,176, 92,235,214,176, 59,235,210,176, 2,235,206,176,130,235, +/* 0x08c0 */ 202,176,116,235,198,176,240,235,194,176, 10,235,190,176, 7,235, +/* 0x08d0 */ 186 }; diff --git a/src/stub/src/i386-linux.elf-entry.S b/src/stub/src/i386-linux.elf-entry.S index 169f7a0c..2b8aeb73 100644 --- a/src/stub/src/i386-linux.elf-entry.S +++ b/src/stub/src/i386-linux.elf-entry.S @@ -32,18 +32,56 @@ */ #include "arch/i386/macros.S" -NBPW= 4 // Number of Bytes Per Word + .att_syntax // opcode src,dst +#define arg1 ebx +#define arg2 ecx +#define arg3 edx + +NBPW= 4 + +sz_b_info= 12 + sz_unc= 0 + sz_cpr= 4 + b_method= 8 + +PROT_READ= 1 +PROT_WRITE= 2 +PROT_EXEC= 4 + +MAP_FIXED= 0x10 +MAP_SHARED= 0x01 +MAP_PRIVATE= 0x02 +MAP_ANONYMOUS= 0x20 + +szElf32_Ehdr= 0x34 +p_memsz= 5*4 + +__NR_exit= 1 +__NR_write= 4 +__NR_open= 5 +__NR_close= 6 +__NR_mkdir= 39 +__NR_oldmmap= 90 // %ebx -> args[6] +__NR_stat= 106 +__NR_olduname= 109 +__NR_oldolduname= 59 +__NR_uname= 122 +__NR_memfd_create= 356 +__NR_mprotect= 125 + +ENOSYS= 38 /* Invalid system call number */ +NAME_MAX= 255 // # chars in file name; linux/include/uapi/linux/limits.h + +PAGE_SHIFT= 12 +PAGE_SIZE= ( 1 << PAGE_SHIFT) +PAGE_MASK= (~0 << PAGE_SHIFT) + +M_NRV2B_LE32= 2 /************************************************************************* // program entry point // see glibc/sysdeps/i386/elf/start.S **************************************************************************/ - -section LEXEC000 -sz_pack2 = -4+ _start -_start: .globl _start -//// nop; int3 // DEBUG - push eax // space for %entry address /* ;; How to debug this code: Uncomment the 'int3' breakpoint instruction above. ;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date. @@ -62,168 +100,316 @@ _start: .globl _start ;; Step through the code; remember that repeats the previous command. ;; */ - call main // push address of decompress subroutine -decompress: -f_exp: // synonym -// /************************************************************************* -// // C callable decompressor -// **************************************************************************/ +section ELFMAINX +sz_pack2 = -NBPW+ _start +_start: .globl _start +/// nop; int3 // DEBUG i386 entry.S + call L70 // MATCH_08 push $&getbit +L70ret: -// /* Offsets to parameters, allowing for {pusha + call} */ -#define O_INP (8*4 +1*4) -#define O_INS (8*4 +2*4) -#define O_OUTP (8*4 +3*4) -#define O_OUTS (8*4 +4*4) -#define O_PARAM (8*4 +5*4) +#define bits %ebx +getbit: + addl bits,bits; jz refill // Carry= next bit + rep; ret // rep: stop instruction pipeline (spend 1 byte for speed) +refill: + mov (%esi),bits; sub $-NBPW,%esi // next 32 bits; set Carry + adc bits,bits // LSB= 1 (CarryIn); CarryOut= next bit + ret // infrequent (1/32) -#define INP dword ptr [esp+O_INP] -#define INS dword ptr [esp+O_INS] -#define OUTP dword ptr [esp+O_OUTP] -#define OUTS dword ptr [esp+O_OUTS] -#define PARM dword ptr [esp+O_PARAM] +#define foldi %esi +#define r_getb %edx +#define r_unc %ebx +#define u_len %edi -section LEXEC009 - //; empty section for commonality with l_lx_exec86.asm -section LEXEC010 - pusha - // cld +L20: + pop foldi // MATCH_09 &fold_info - mov esi, INP - mov edi, OUTP +#define old_sp %ebp +F_FRAME= 7*NBPW +F_ENTR= 6*NBPW; F_PMASK= F_ENTR +F_MFD= 5*NBPW +F_LENU= 4*NBPW +F_ADRU= 3*NBPW +F_ELFA= 2*NBPW +F_LENX= 1*NBPW +F_ADRX= 0*NBPW - or ebp, -1 -//;; align 8 +D_FOLD= 3*NBPW // .data space at start of unfold +D_QFLG= 2*NBPW +D_FNAME= 1*NBPW +D_PMASK= 0*NBPW -#include "arch/i386/nrv2b_d32.S" -#include "arch/i386/nrv2d_d32.S" -#include "arch/i386/nrv2e_d32.S" -#include "arch/i386/lzma_d.S" - cjt32 0 +#if 0 //{ DEBUG + mov $0xa5a5a5a5,%eax + push %eax; push %eax; push %eax; push %eax + push %eax; push %eax; push %eax +#else //}{ non-DEBUG + sub $F_FRAME,%esp +#endif //} +AT_PAGESZ= 6 // /usr/include/elf.h + lea NBPW + F_FRAME(%esp),%edi // past argc + call zfind // skip argv + call zfind // skip env +0: // find AT_PAGESZ in auxv + mov (%edi),%eax + mov NBPW(%edi),%ecx; add $2*NBPW,%edi + cmp $AT_PAGESZ,%eax; je 5f + mov $1<<12,%ecx // default PAGE_SIZE + test %eax,%eax; jne 0b +5: + neg %ecx // PAGE_MASK -section LEXEC015 - // eax is 0 from decompressor code - //xor eax, eax ; return code + mov %esp,old_sp + mov %ecx,F_PMASK(old_sp) + lea sz_pack2 - L70ret(r_getb),%edi + mov (%edi),%ecx + sub %ecx,%edi; mov %edi,F_ELFA(old_sp) + lodsl // O_BINFO | is_ptinterp | unmap_all_pages; advance to &b_info + add %eax,%edi; mov %edi,F_ADRX(old_sp) + sub %eax,%ecx; mov %ecx,F_LENX(old_sp) +// cmpw $M_NRV2B_LE32|(0<<8),b_method(foldi); je 0f; hlt; 0: // check method and filter bytes -// check compressed size - mov edx, INP - add edx, INS - cmp esi, edx - jz .ok - dec eax -.ok: + mov /*sz_unc*/(foldi),r_unc + // align + {page_mask, fd_name} + "/data/data/$APP_NAME/cache/upxAAA" + lea (1+ NAME_MAX + 2*NBPW + D_FOLD + (1+ 11 + 13))(r_unc),u_len + mov u_len,F_LENU(old_sp) + sub u_len,%esp // alloca + and $-2*NBPW,%esp // align stack -// write back the uncompressed size - sub edi, OUTP - mov edx, OUTS - mov [edx], edi + lea (2*NBPW + D_FOLD)(r_unc),%eax; add %esp,%eax + and $-2*NBPW,%eax; push %eax // MATCH_31 where to put pathname + mov %eax,%ecx + sub %esp,%ecx; mov %ecx,D_FNAME(%esp) // forward to unfolded code + mov F_PMASK(old_sp),%ecx; mov %ecx,D_PMASK(%esp) // forward to unfolded code + mov $MAP_PRIVATE|MAP_ANONYMOUS,%ecx; mov %ecx,D_QFLG(%esp) // forward to unfolded code - mov [7*4 + esp], eax - popa - ret + xor %ecx,%ecx // zero + push %edx // MATCH_33 save &getbit + push %eax // arg3 &pathname + mov %ecx,(%eax) // empty string + push u_len // arg2 + push %ecx // arg1 0==> any page + call upx_mmap_and_fd; add $3*NBPW,%esp // (ptr, len, pathname) + pop %edx // MATCH_33 restore &getbit + mov %eax,%ecx + shr $12,%eax; shl $12,%eax; mov %eax,F_ADRU(old_sp) + sub %eax,%ecx; sub $1,%ecx; mov %ecx,F_MFD (old_sp) +#undef r_unc +#undef u_len - ctojr32 - ctok32 edi, dl -section LEXEC017 - popa - ret +// This is nrv2b_d32, inlined and optimized for small space (about 160 bytes). +// The task is to de-compress the folded pieces for shared library init: +// the de-compressor(s) of the PT_LOAD pieces, and the C-code supervisor +// which adjusts the placement and mapping of the address space. +// The output length is a couple KB for NRV, a few KB for Lzma, 64KB for Zstd. +// This is motivated by the possibility of using multiple de-compressors +// depending on the characteristics of each PT_LOAD, and by the increased size +// and compressability of C-coded de-compressors for Lzma and Zstd +// in contrast to the simple and small assembly-coded NRV. -section LEXEC020 +/* Working registers for local NRV2B */ +#define off %eax /* XXX: 2GB */ +//#define bits %ebx +#define len %ecx /* XXX: 2GB */ +#define disp %ebp -PAGE_SHIFT= 12 -PAGE_SIZE= ( 1 << PAGE_SHIFT) -PAGE_MASK= (~0 << PAGE_SHIFT) +#define GETBIT call *r_getb /* %edx */ +#define jnextb0 GETBIT; jnc +#define jnextb1 GETBIT; jc -MAP_FIXED= 0x10 -MAP_PRIVATE= 0x02 -MAP_ANONYMOUS= 0x20 +/* rotate next bit (now in Carry) into bottom bit of reg */ +#define getnextb(reg) GETBIT; adcl reg,reg -PROT_READ= 1 -PROT_WRITE= 2 -PROT_EXEC= 4 +/* Arguments to decompress() */ +#define src %esi +#define lsrc %ecx +#define dst %edi +//#define ldst %edx /* Out: actually a reference: &len_dst */ -__NR_exit= 1 -__NR_write= 4 -__NR_open= 5 -__NR_mmap= 90 -__NR_mprotect= 125 + lea D_FOLD(%esp),dst // &unfolded code + push old_sp // MATCH_16 save register + mov sz_cpr(foldi),lsrc + lea sz_b_info(foldi),src +#undef foldi -szElf32_Ehdr= 0x34 -p_memsz= 5*4 +decompress: // inlined: (uchar const *src, uint len, uchar *dst /*, u32 &ldst, uint method */) + add src,lsrc; push lsrc // MATCH_05 &input_eof + //subq src,lsrc // restore the value of lsrc; dead for inlined nrv2b -sz_unc= 0 -sz_cpr= 4 +//%esp: +// MATCH_05 &input_eof +// MATCH_16 old_sp +// space for de-compressed code -is_ptinterp= (1<<0) -unmap_all_pages= (1<<1) +//old_sp: +// MATCH_10 len unfolded_code +// MATCH_14 &so_info +// MATCH_03 pusha regs {%edi,%esi,%ebp,%esp,%ebx,%edx,%ecx,%eax} +// ret_addr +// MATCH_00 argc +// MATCH_01 argv +// MATCH_07 envp -#define pushsbli .byte 0x6a, /* push sign-extended byte to long immediate*/ + xor bits,bits // empty; force refill + xor len,len // create loop invariant + or $~0,disp // -1: initial dispacement + cld // paranoia + .byte 0xa8 // "testb $... ,%al" ==> "jmp top_n2b" +lit_n2b: + movsb // *dst++ = *src++; +top_n2b: + jnextb1 lit_n2b + lea 1(len),off # [len= 0] off= 1 +offmore_n2b: + getnextb(off) + jnextb0 offmore_n2b -// Decompress the rest of this loader, and jump to it -unfold: // IN: ebp= f_exp; esp/ &O_BINFO - pop esi; lodsd // skip O_BINFO; esi= &compressed fold_elf86 - lea edi,[sz_pack2 - f_exp + ebp] - sub edi,[edi] // edi= &Elf32_Ehdr of this program + sub $ 3,off; jc len_n2b # use previous offset + shl $ 8,off; lodsb # off is %eax, so 'lodsb' is "off |= *src++;" + xor $~0,off; jz eof_n2b + mov off,disp # XXX: 2GB +len_n2b: + lea 1(len),off # [len= 0] off= 1 + getnextb(len); getnextb(len) # two bits; cc set on result + jnz gotlen_n2b # raw 1,2,3 ==> 2,3,4 + mov off,len # len= 1, the msb + add $3-1,off # raw 2.. ==> 5.. +lenmore_n2b: + getnextb(len) + jnextb0 lenmore_n2b +gotlen_n2b: + cmp $-0xd00,disp # XXX: 2GB + adc off,len # len += off + (disp < -0xd00) + push %esi // MATCH_06 + lea (%edi,disp),%esi + rep; movsb + pop %esi // MATCH_06 + jmp top_n2b - push -1 // P_31 %fd +eof_n2b: + pop %ecx // MATCH_05 &input_eof + cmp %ecx,%esi; je 0f; hlt; 0: // test for ending in correct place + pop old_sp // MATCH_16 -// Reserve space for unfolded stub - push 0 // offset - push -1 // fd - push MAP_PRIVATE|MAP_ANONYMOUS - mov edx,[esi] // .sz_unc - push PROT_READ|PROT_WRITE - push edx // len - push 0 // kernel chooses addr - call mmap - push edx // P_23 LENU - push eax // P_24 ADRU - xchg eax,edx // edx= ADRU +#define mfd %edi + mov F_MFD(old_sp),mfd + mov F_LENU(old_sp),%edx + mov %esp,%ecx + mov %edi,%ebx + mov $__NR_write,%al; call sys_check_al -// Unfold - lodsd; push eax; mov ebx,esp // sz_unc - lodsd; xchg ecx,eax // sz_cpr - lodsd; push eax // b_method - push ebx // &sz_unc - push edx // dst - push ecx // sz_cpr - push esi // src - call ebp // decompress - add esp,6*NBPW + mov old_sp,%esp // de-alloca -// PROT_EXEC - pop %ebx // P_24 ADRU - pop %ecx // P_23 LENU - push PROT_EXEC|PROT_READ; pop edx - push %ecx // P_23 LENU - push %ebx // P_24 ADRU - push __NR_mprotect; pop eax; int 0x80 + push $0 // arg6 + push mfd // arg5 + push $MAP_FIXED|MAP_PRIVATE // arg4 + push $PROT_READ|PROT_EXEC // arg3 + push F_LENU(%ebp) // arg2 + push F_ADRU(%ebp) // arg1 + call mmap; add $6*NBPW,%esp -// Jump to unfolded code - lea esi,[-4*NBPW + esi] - lodsd // eax= O_BINFO; esi= &b_info - and eax,~(is_ptinterp | unmap_all_pages) - add eax,edi // ADRX - mov ecx,[sz_pack2 - f_exp + ebp] // LENX(==sz_pack2) -// eax:ADRX; ebx:free; ecx:LENX -// ebp:f_exp; esi:&b_info(fold); edi:dynbase - pop %edx; push %edx - jmp edx // esp/ ADRU,LENU,fd,%entry,argc,argv,0,... + mov mfd,%ebx + mov $__NR_close,%al; call sys_check_al -mmap: // oldmmap: ebx -> 6 arguments; remove arguments on return - lea ebx,[NBPW+esp] - push __NR_mmap; pop eax; int 0x80 - cmp eax,PAGE_MASK; jb 0f; hlt; 0: - ret 6*4 + mov F_ADRU(%ebp),%eax + add $D_FOLD,%eax // PAGE_MASK, upxfd_path, mflg_data + jmp *%eax +// %esp: +// MATCH_13 ptr unfolded_code; for escape hatch +// MATCH_12 len unfolded code; for escape hatch +// MATCH_14 &so_info +// MATCH_03 pusha regs {%edi,%esi,%ebp,%esp,%ebx,%edx,%ecx,%eax} +// ret_addr +// MATCH_00 argc +// MATCH_01 argv +// MATCH_07 envp - .balign 4 // for Android emulator -main: - pop ebp // &decompress - nop;nop // align 'call' opcode to (3 mod 4) - call unfold // " *--sp = &O_BINFO; goto unfold; " - // must be ".balign 4" here for Android emulator - .long O_BINFO - // compressed fold_elf86 follows -eof: + +sys_check_al: + movzbl %al,%eax +sys_check: // syscall with error checking; if halt then %eax= -errno, %ecx= __NR_ + push %eax // save __NR_ for debug + int $0x80 + pop %ecx // recover __NR_ for debug + cmp $~0<<12,%eax; jb 0f; hlt; 0: // -errno + ret + +mmap: .globl mmap // for C-callable, such as from upx_mmap_and_fd() + push %ebx // save register + lea 2*NBPW(%esp),%ebx + mov $__NR_oldmmap,%al; call sys_check_al // use simpler-for-us oldmmap + pop %ebx // restore register + ret // C-callable, so cannot remove 6 args here + +get_upxfn_path: .globl get_upxfn_path + sub %eax,%eax // should not be called! + ret + +stat: .globl stat + xchg %ebx,NBPW(%esp) + mov 2*NBPW(%esp),%ecx + push $__NR_stat; pop %eax; int $0x80 + mov NBPW(%esp),%ebx + ret + +uname: .globl uname + push %ebp; mov %esp,%ebp + push %ebx + mov 2*NBPW(%ebp),%ebx + push $__NR_olduname; pop %eax; int $0x80 + pop %ebx; pop %ebp + ret + +mkdir: .globl mkdir + push %ebp; mov %esp,%ebp + push %ebx + mov 2*NBPW(%ebp),%ebx + mov 3*NBPW(%ebp),%ecx + push __NR_mkdir; pop %eax; int $0x80 + pop %ebx + pop %ebp + ret + +memset: .globl memset // (dst, val, n) + push %ebp; mov %esp,%ebp + push %edi + mov (2+ 2)*NBPW(%ebp),%ecx + mov (2+ 1)*NBPW(%ebp),%eax + mov (2+ 0)*NBPW(%ebp),%edi + rep stosb + pop %edi + pop %ebp + ret + +mempcpy: .globl mempcpy // (dst, src, n) + push %ebp; mov %esp,%ebp + push %edi; push %esi + mov (2+ 2)*NBPW(%ebp),%ecx + mov (2+ 1)*NBPW(%ebp),%esi + mov (2+ 0)*NBPW(%ebp),%edi + rep movsb + mov %edi,%eax + pop %esi; pop %edi; pop %ebp + ret + +zfind: + mov (%edi),%eax; add $NBPW,%edi + test %eax,%eax; jne zfind + ret + +my_bkpt: .globl my_bkpt + int3 // my_bkpt + ret + +// IDENTSTR goes here + + section ELFMAINZ +L70: + pop r_getb // MATCH_08 &getbit (also L70ret) + call L20 // MATCH_09 push $&fold_info +fold_info: // nice if 4-byte aligned + .long O_BINFO // | is_ptinterp | unmap_all_pages +// b_info (sz_unc, sz_cpr, method) of folded code (C-language, etc.) /* vim:set ts=8 sw=8 et: */ diff --git a/src/stub/src/i386-linux.elf-entry.lds b/src/stub/src/i386-linux.elf-entry.lds new file mode 100644 index 00000000..8ffcb623 --- /dev/null +++ b/src/stub/src/i386-linux.elf-entry.lds @@ -0,0 +1,13 @@ +OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +OUTPUT_ARCH(i386) + +SECTIONS +{ + . = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */ + .text : { + } + ELFMAINX : { + *(ELFMAINX) + *(.text) + } +} diff --git a/src/stub/src/i386-linux.elf-fold.S b/src/stub/src/i386-linux.elf-fold.S index 0752d368..79dd8018 100644 --- a/src/stub/src/i386-linux.elf-fold.S +++ b/src/stub/src/i386-linux.elf-fold.S @@ -32,7 +32,12 @@ #include "arch/i386/macros.S" NBPW= 4 +# WARNING: This file uses Intel syntax: opcode dst,src +# Memory operands use square brackets: [displ + %reg] +# Literal operands lack square brackets. + PAGE_SIZE= ( 1<<12) +PAGE_MASK= -PAGE_SIZE PATH_MAX= 4096 ET_DYN= 3 @@ -49,6 +54,7 @@ sz_Elf32_Phdr= 8*NBPW #define szp_info 12 #define a_type 0 #define a_val NBPW +#define sz_auxv 2*NBPW is_ptinterp= (1<<0) unmap_all_pages= (1<<1) @@ -57,7 +63,13 @@ __NR_readlink= 85 __NR_munmap= 91 __NR_open= 5 __NR_close= 6 -__NR_mmap= 0xc0 +__NR_mkdir= 39 +__NR_stat= 106 +__NR_newmmap= 0xc0 // new mmap: args in ebx,ecx,edx,esi,edi,ebp +__NR_oldmmap= 90 // old mmap: %ebx -> args[6] +__NR_olduname= 109 +__NR_oldolduname= 59 +__NR_uname= 122 __NR_mprotect= 0x7d __NR_brk= 45 @@ -71,58 +83,85 @@ O_RDONLY= 0 // control just falls through, after this part and compiled C code // are uncompressed. -// enter: -// eax:ADRX; ebx:free; ecx:LENX -// ebp:f_exp; esi:&b_info; edi:elfaddr -// esp/ ADRU,LENU,%fd,%entry,argc,argv,0,envp,0,auxv,0,strings +// enter at fold_begin : +// esp/ ADRX,LENX,elfaddr,ADRU,LENU,%fd,%entry,argc,argv,0,envp,0,auxv,0,strings // (ADRU,LENU) = params for final munmap() -// (ADRX,LENX) = extent of compressed program (after moving) +// (ADRX,LENX) = extent of compressed program +F_FRAME= 7*NBPW +F_ENTR= 6*NBPW; F_PMASK= F_ENTR +F_MFD= 5*NBPW +F_LENU= 4*NBPW +F_ADRU= 3*NBPW +F_ELFA= 2*NBPW +F_LENX= 1*NBPW +F_ADRX= 0*NBPW + +PAGE_MASK= . - 3*NBPW +upxfn_path= . - 2*NBPW // displacement to filename string +mflg_data= . - 1*NBPW // QNZ vs Linux fold_begin: -//// int3 // DEBUG - push edi // elfaddr - push ecx // LENX - push eax // ADRX - mov ebx,[-NBPW + esi] // O_BINFO | is_ptinterp | unmap_all_pages +//// int3 // DEBUG + pop ebx; push ebx // F_ADRX: elfaddr + (O_BINFO | is_ptinterp | unmap_all_pages) + jmp L10 - mov esi,esp; testb bl,unmap_all_pages; jnz 0f; sub esp,PATH_MAX; 0: - mov edi,esp; push 8; pop ecx; rep movsd // copy ADRX,LENX,elfaddr,ADRU,LENU,%fd,entry,argc +get_page_mask: .globl get_page_mask + call 0f; 0: pop %ecx + mov %eax,[PAGE_MASK - 0b + %ecx] + ret - push ebp // f_exp +get_upxfn_path: .globl get_upxfn_path + call 0f; 0: pop %ecx + mov %eax,[upxfn_path - 0b + %ecx] + test %eax,%eax; je 1f; add %eax,%ecx +1: + ret + +L10: + mov esi,esp + testb bl,unmap_all_pages; jnz 0f; sub esp,PATH_MAX; 0: + mov edi,esp; push 8; pop ecx; rep movsd // copy ADRX,LENX,elfaddr,ADRU,LENU,fd,entry,argc + + push ebp // f_exp FIXME: this is no longer used mov ebp,esp // frame: f_exp,ADRX,LENX,elfaddr,ADRU,LENU,%fd,entry,argc 0: lodsd; test %eax,%eax; stosd; jne 0b // argv - push edi // P_05 &new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,%fd,entry,argc + push edi // P_05 &new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,fd,entry,argc testb bl,unmap_all_pages; jnz 0f; stosd; 0: // space for new_env[0] 0: lodsd; test %eax,%eax; stosd; jne 0b // env - push edi // P_06 &old_auxv,&new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,%fd,entry,argc + push edi // P_06 &old_auxv,&new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,fd,entry,argc 0: lodsd; test %eax,%eax; stosd; movsd; jne 0b // auxv + testb bl,unmap_all_pages; jz env_pse - pop %edi // P_06 &old_auxv + pop edi // P_06 &old_auxv pop ecx // toss P_05 + push -1; pop [1*NBPW + F_MFD + esp] jmp no_env_pse env_pse: + inc eax // 1, AT_IGNORE sub edi,2*NBPW // back to {AT_NULL} - push 5*2; pop ecx; rep stosd // 5 extra slots of AT_IGNORE + mov ecx,5*2; rep stosd // 5 extra slots of AT_IGNORE dec eax; stosd; stosd // 0, AT_NULL sub [-2*NBPW + ebp],edi // -len_aux - push edi // P_07 &new_aux[N],-len_aux,&new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,%fd,entry,argc - push esi // P_08 &strings,&new_aux[N],-len_aux,&new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,%fd,entry,argc + push edi // P_07 &new_aux[N],-len_aux,&new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,fd,entry,argc + push esi // P_08 &strings,&new_aux[N],-len_aux,&new_env[0]; f_exp,ADRX,LENX,elfaddr,ADRU,LENU,fd,entry,argc + + call 1f; 0: .asciz "/proc/self/exe"; 1: + + // Use inline 'int 0x80' because failure is not fatal + pop ebx // P_08 path + sub ecx,ecx // O_RDONLY + push __NR_open; pop eax; int 0x80 + mov [esp+ F_MFD + 5*NBPW],eax // fd for mmap - call 1f -0: - .asciz "/proc/self/exe" -1: - pop ebx; push ebx // path; copy of path - mov ecx,O_RDONLY - push __NR_open; pop eax; int 0x80; mov [6*NBPW + ebp],eax // fd - pop ebx // copy of path mov edx,-5*2*NBPW -1+ PATH_MAX // buflen mov ecx,edi // buffer - push __NR_readlink; pop eax; int 0x80; test eax,eax; jns 0f + // mov ebx,ebx // name + push __NR_readlink; pop eax; int 0x80 + test eax,eax; jns 0f mov ecx,ebx // point at name mov eax,-1+ (1b - 0b) // len 0: @@ -168,38 +207,33 @@ no_env_pse: pop ebp // f_exp // stack is back to original state: ADRX,LENX,elfaddr,ADRU,LENU,fd,entry,argc - pop eax // ADRX: &b_info + pop eax; and eax,~(is_ptinterp | unmap_all_pages) // ADRX: &b_info pop esi // LENX: total_size - pop ecx // elfaddr + pop ebp // elfaddr #define OVERHEAD 2048 #include "MAX_ELF_HDR.S" sub esp, MAX_ELF_HDR_32 + OVERHEAD // alloca - mov edx, esp // &tmp - push ecx // elfaddr (9th arg) - mov ebx, [ eax] // length of uncompressed ELF headers - mov ecx, [NBPW + eax] // length of compressed ELF headers - add ecx, szb_info - // edi, esi, ebp, esp, ebx, edx, ecx, eax - pusha // (auxv, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} ) - inc edi // swap with above 'pusha' to inhibit auxv_up for PT_INTERP -.extern upx_main + push esp // &tmp + push edi // &final_auxv[0] + push ebp // elfaddr + push esi // LENX total size + push eax // ADRX &b_info call upx_main // returns entry address - dec edi - mov esi,eax // entry - mov ebp,[8*NBPW+ esp] // elfaddr + // leave 5 params on stack until de-alloca below + mov esi,eax // esi= entry; edi= auxv; ebp= elfaddr // Discard C_TEXT (includes [ADRC,+LENC) ) mov ecx,[ebp+ p_memsz+sz_Elf32_Phdr+sz_Elf32_Ehdr] // Phdr[C_TEXT= 1].p_memsz mov ebx,ebp // hi &Elf32_Ehdr cmpw [e_type + ebp],ET_EXEC; jne 1f - push __NR_brk; pop %eax; int 0x80 // static __end_bss + mov al,__NR_brk; call sys_check_al // static __end_bss 1: - push __NR_munmap; pop %eax; int 0x80 // discard C_TEXT compressed data + mov al,__NR_munmap; call sys_check_al // discard C_TEXT compressed data // Buggy programs may depend on uninit stack being 0, so clear what we used. mov edx,edi // save auxv mov edi,esp - mov ecx,((8 +1)*NBPW + MAX_ELF_HDR_32 + OVERHEAD) >>2 // 8 params, elfaddr, un-alloca + mov ecx,(5*NBPW + MAX_ELF_HDR_32 + OVERHEAD) >>2 // 5 params, de-alloca xor eax,eax // 0 rep stosd // clear frame on exit mov esp,edi // end of frame @@ -215,7 +249,7 @@ no_env_pse: push edi // fd, auxv, ADRU, LENU, entry, argc // Map one page of /proc/self/exe so that symlink does not disappear - pop ebx // toss fd in case no_pse_map + pop ebx // fd in case no_pse_map test edi,edi; js no_pse_map push ebx // restore fd sub ebp,ebp // 0 block in file @@ -224,10 +258,10 @@ no_env_pse: push PROT_READ; pop edx mov ecx,PAGE_SIZE sub ebx,ebx // 0 ==> Linux chooses page frame - push __NR_mmap; pop eax; int 0x80 + mov al,__NR_newmmap; call sys_check_al pop ebx // fd; auxv, LENU, ADRU, entry, argc - push __NR_close; pop eax; int 0x80 + mov al,__NR_close; call sys_check_al no_pse_map: pop edi // auxv table sub eax,eax // 0, also AT_NULL @@ -253,6 +287,7 @@ L60: mov al, __NR_munmap // eax was 0 from L60 jmp [edi] // unmap ourselves via escape hatch, then goto entry + section SYSCALLS // Sometimes linux enforces page-aligned address Pprotect: .globl Pprotect xchg ebx,[1*NBPW + esp] // save reg, %ebx= address @@ -261,29 +296,100 @@ Pprotect: .globl Pprotect sub ecx,%ebx // extra length add ecx,[2*NBPW + esp] // length mov edx,[3*NBPW + esp] // bits - push __NR_mprotect; pop %eax; int 0x80 + mov al,__NR_mprotect; call sys_check_al cmp eax, -0x1000; jna 0f; hlt; 0: mov ebx,[1*NBPW + esp] // restore reg ret -mmap: .globl mmap // what happened to the ebx->args_on_stack method? - push ebp - push ebx - push esi - push edi - mov ebx,[ 5*NBPW + esp] - mov ecx,[ 6*NBPW + esp] - mov edx,[ 7*NBPW + esp] - mov esi,[ 8*NBPW+ esp] - mov edi,[ 9*NBPW + esp] - mov ebp,[10*NBPW + esp] - shr ebp,12 - push __NR_mmap; pop eax; int 0x80 + // FIXME: page-shift the file offset (last parameter) ?? +// C-callable, so do NOT remove arguments as part of return +mmap: .globl mmap // oldmmap: ebx -> 6 arguments + push ebx // save register + lea ebx,[2*NBPW + esp] + mov al,__NR_oldmmap; call sys_check_al + pop ebx // restore register + ret - pop edi - pop esi - pop ebx - pop ebp +sys_check_al: + movzbl eax,al +sys_check: + push eax // save __NR_ for debug + int 0x80 + pop edx // recover __NR_ for debug + cmp %eax,-1<<12; jae 0f; ret; 0: + hlt + +stat: .globl stat + push %ebp + mov %ebp,%esp + push %ebx + mov %ebx,[2*NBPW + %ebp] + mov %ecx,[3*NBPW + %ebp] + push __NR_stat; pop %eax; int 0x80 + pop %ebx; pop %ebp + ret + +uname: .globl uname + push %ebp + mov %ebp,%esp + push %ebx + mov %ebx, [2*NBPW + %ebp] + push __NR_olduname; pop %eax; int 0x80 + pop %ebx; pop %ebp + ret + +mkdir: .globl mkdir + push %ebp + mov %ebp,%esp + push %ebx + mov %ebx,[2*NBPW + %ebp] + mov %ecx,[3*NBPW + %ebp] + push __NR_mkdir; pop %eax; int 0x80 + pop %ebx + pop %ebp + ret + +memset: .globl memset // (dst, val, n) + push %ebp + mov %ebp,%esp + push %edi + mov %ecx,[(2+ 2)*NBPW + %ebp] + mov %eax,[(2+ 1)*NBPW + %ebp] + mov %edi,[(2+ 0)*NBPW + %ebp] + push %edx // save original dst + rep stosb + pop %eax // return original dst + pop %edi + pop %ebp + ret + +memcpy: .globl memcpy // void *memcpy(void *dst, void const *src, size_t len) + push %ebp + mov %ebp,%esp + push %edi; push %esi + mov %ecx,[(2+ 2)*NBPW + %ebp] + mov %eax,[(2+ 1)*NBPW + %ebp] + mov %edi,[(2+ 0)*NBPW + %ebp] + push %edi // save original dst + rep movsb + pop %eax // return original dst + pop %esi; pop %edi; pop %ebp + ret + +mempcpy: .globl mempcpy // (dst, src, n) + push %ebp + mov %ebp,%esp + push %edi; push %esi + mov %ecx,[(2+ 2)*NBPW + %ebp] + mov %eax,[(2+ 1)*NBPW + %ebp] + mov %edi,[(2+ 0)*NBPW + %ebp] + rep movsb + mov %eax,%edi // return updated dst + pop %esi; pop %edi; pop %ebp + ret + +my_bkpt: .globl my_bkpt + int3 // my_bkpt ret .balign 4,0 diff --git a/src/stub/src/i386-linux.elf-fold.lds b/src/stub/src/i386-linux.elf-fold.lds index ce05e54f..2515f7a9 100644 --- a/src/stub/src/i386-linux.elf-fold.lds +++ b/src/stub/src/i386-linux.elf-fold.lds @@ -31,19 +31,8 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) /*ENTRY(_start)*/ -PHDRS -{ - text PT_LOAD FILEHDR PHDRS ; - data PT_LOAD ; /* for setting brk(0) */ -} + SECTIONS { - /* 0x00c01000: 12 MiB + 4 KiB for Fedora Core 5 vDSO at 0xc00000 */ - . = 0x00c01000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */ - .text : { - *(.text) - *(.data) - } : text - .data : { - } : data + . = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */ } diff --git a/src/stub/src/i386-linux.elf-main2.c b/src/stub/src/i386-linux.elf-main2.c new file mode 100644 index 00000000..c066de3d --- /dev/null +++ b/src/stub/src/i386-linux.elf-main2.c @@ -0,0 +1,876 @@ +/* amd64-linux.elf-main.c -- stub loader for Linux 64-bit ELF executable + + This file is part of the UPX executable compressor. + + Copyright (C) 1996-2024 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996-2024 Laszlo Molnar + Copyright (C) 2000-2024 John F. Reiser + All Rights Reserved. + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Markus F.X.J. Oberhumer Laszlo Molnar + + + John F. Reiser + + */ + +#ifndef DEBUG //{ +#define DEBUG 0 +#endif //} + +#include "include/linux.h" +#define MFD_EXEC 0x0010 +#define nullptr 0 + +extern void *memcpy(void *dst, void const *src, size_t n); +// Pprotect is mprotect but uses page-aligned address (Linux requirement) +extern unsigned Pprotect(void *, size_t, unsigned); +//extern void *Pmap(void *, size_t, unsigned, unsigned, int, size_t); +//extern int Punmap(void *, size_t); +extern size_t Pwrite(unsigned, void const *, size_t); +# define mmap_privanon(addr,len,prot,flgs) mmap((addr),(len),(prot), \ + MAP_PRIVATE|MAP_ANONYMOUS|(flgs),-1,0) + +extern void my_bkpt(void *, ...); + +#if defined(__powerpc__) //}{ +#define addr_string(string) ({ \ + char const *str; \ + asm("bl 0f; .string \"" string "\"; .balign 4; 0: mflr %0" \ +/*out*/ : "=r"(str) \ +/* in*/ : \ +/*und*/ : "lr"); \ + str; \ +}) +#elif defined(__i386__) //}{ +#define addr_string(string) ({ \ + char const *str; \ + asm("call 0f; .asciz \"" string "\"; 0: pop %0" \ +/*out*/ : "=r"(str) ); \ + str; \ +}) +#elif defined(__arm__) //}{ +#define addr_string(string) ({ \ + char const *str; \ + asm("bl 0f; .string \"" string "\"; .balign 4; 0: mov %0,x30" \ +/*out*/ : "=r"(str) \ +/* in*/ : \ +/*und*/ : "x30"); \ + str; \ +}) +#else //}{ +#error; +#endif //} +#if !DEBUG //{ +#define DPRINTF(fmt, args...) /*empty*/ +#else //}{ +// DPRINTF is defined as an expression using "({ ... })" +// so that DPRINTF can be invoked inside an expression, +// and then followed by a comma to ignore the return value. +// The only complication is that percent and backslash +// must be doubled in the format string, because the format +// string is processd twice: once at compile-time by 'asm' +// to produce the assembled value, and once at runtime to use it. +#if defined(__powerpc__) //{ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("bl 0f; .string \"" fmt "\"; .balign 4; 0: mflr %0" \ +/*out*/ : "=r"(r_fmt) \ +/* in*/ : \ +/*und*/ : "lr"); \ + dprintf(r_fmt, args); \ +}) +#elif defined(__x86_64) || defined(__i386__) //}{ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("call 0f; .asciz \"" fmt "\"; 0: pop %0" \ +/*out*/ : "=r"(r_fmt) ); \ + dprintf(r_fmt, args); \ +}) +#elif defined(__arm__) /*}{*/ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("mov %0,pc; b 0f; \ + .asciz \"" fmt "\"; .balign 4; \ + 0: " \ +/*out*/ : "=r"(r_fmt) ); \ + dprintf(r_fmt, args); \ +}) +#elif defined(__mips__) /*}{*/ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm(".set noreorder; bal L%=j; move %0,$31; .set reorder; \ + .asciz \"" fmt "\"; .balign 4; \ + L%=j: " \ +/*out*/ : "=r"(r_fmt) \ +/* in*/ : \ +/*und*/ : "ra"); \ + dprintf(r_fmt, args); \ +}) +#endif //} + +static int dprintf(char const *fmt, ...); // forward +#endif /*}*/ + +/************************************************************************* +// configuration section +**************************************************************************/ + +// In order to make it much easier to move this code at runtime and execute +// it at an address different from it load address: there must be no +// static data, and no string constants. + +#define ElfW(sym) Elf32_ ## sym + +#include "MAX_ELF_HDR.c" + +/************************************************************************* +// "file" util +**************************************************************************/ + +typedef struct { + size_t size; // must be first to match size[0] uncompressed size + char *buf; +} Extent; + + +static void +xread(Extent *x, char *buf, size_t count) +{ + DPRINTF("xread x.size=%%x x.buf=%%p buf=%%p count=%%x\\n", + x->size, x->buf, buf, count); + char *p=x->buf, *q=buf; + size_t j; + if (x->size < count) { + exit(127); + } + for (j = count; 0!=j--; ++p, ++q) { + *q = *p; + } + x->buf += count; + x->size -= count; + DPRINTF("xread done count=%%x\\n", count); +} + + +/************************************************************************* +// util +**************************************************************************/ + +#if !DEBUG //{ save space +#define ERR_LAB error: exit(127); +#define err_exit(a) goto error +#else //}{ save debugging time +#define ERR_LAB /*empty*/ +static void +err_exit(int a) +{ + (void)a; // debugging convenience + DPRINTF("err_exit %%d\\n", a); + exit(127); +} +#endif //} + +/************************************************************************* +// UPX & NRV stuff +**************************************************************************/ + +extern size_t get_page_mask(void); // variable page size AT_PAGESZ; see *-fold.S + +int f_expand( // .globl in $(ARCH)-expand.S + nrv_byte const *binfo, nrv_byte *dst, size_t *dstlen); + +static void +unpackExtent( + Extent *const xi, // input includes struct b_info + Extent *const xo // output +) +{ + while (xo->size) { + DPRINTF("unpackExtent xi=(%%p %%p) xo=(%%p %%p)\\n", + xi->size, xi->buf, xo->size, xo->buf); + struct b_info h; + // Note: if h.sz_unc == h.sz_cpr then the block was not + // compressible and is stored in its uncompressed form. + + // Read and check block sizes. + xread(xi, (char *)&h, sizeof(h)); + DPRINTF("h.sz_unc=%%x h.sz_cpr=%%x h.b_method=%%x\\n", + h.sz_unc, h.sz_cpr, h.b_method); + if (h.sz_unc == 0) { // uncompressed size 0 -> EOF + if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic + err_exit(2); + if (xi->size != 0) // all bytes must be written + err_exit(3); + break; + } + if (h.sz_cpr <= 0) { + err_exit(4); +ERR_LAB + } + if (h.sz_cpr > h.sz_unc + || h.sz_unc > xo->size ) { + err_exit(5); + } + // Now we have: + // assert(h.sz_cpr <= h.sz_unc); + // assert(h.sz_unc > 0 && h.sz_unc <= blocksize); + // assert(h.sz_cpr > 0 && h.sz_cpr <= blocksize); + + if (h.sz_cpr < h.sz_unc) { // Decompress block + size_t out_len = h.sz_unc; // EOF for lzma + int const j = f_expand((unsigned char *)xi->buf - sizeof(h), + (unsigned char *)xo->buf, &out_len); + if (j != 0 || out_len != (nrv_uint)h.sz_unc) { + DPRINTF(" j=%%x out_len=%%x &h=%%p\\n", j, out_len, &h); + err_exit(6); + } + xi->buf += h.sz_cpr; + xi->size -= h.sz_cpr; + } + else { // copy literal block + DPRINTF(" copy %%p %%p %%p\\n", xi->buf, xo->buf, h.sz_cpr); + xread(xi, xo->buf, h.sz_cpr); + } + xo->buf += h.sz_unc; + xo->size -= h.sz_unc; + } +} + +extern long upx_mmap_and_fd( // x86_64 Android emulator of i386 is not faithful + void *ptr + , unsigned len // also pre-allocate space in file + , char *pathname // 0 ==> call get_upxfn_path, which stores if 1st time +#if 0 //{ always 0 + , unsigned frag_mask // ~page_mask +#endif //} +); +#if defined(__i386__) // +// Create (or find) an escape hatch to use when munmapping ourselves the stub. +// Called by do_xmap to create it; remembered in AT_NULL.d_val +static char * +make_hatch_i386( + ElfW(Phdr) const *const phdr, + char *next_unc, + unsigned frag_mask +) +{ + char *hatch = 0; + DPRINTF("make_hatch %%p %%p %%x\\n", phdr, next_unc, frag_mask); + if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) { + next_unc += phdr->p_memsz - phdr->p_filesz; // Skip over local .bss + frag_mask &= -(long)next_unc; // bytes left on page + unsigned /*const*/ escape = 0xc36180cd; // "int $0x80; popa; ret" + if (4 <= frag_mask) { + hatch = next_unc; + *(long *)&hatch[0] = escape; + } + else { // Does not fit at hi end of .text, so must use a new page "permanently" + unsigned long fdmap = upx_mmap_and_fd((void *)0, sizeof(escape), nullptr); + unsigned mfd = -1+ (0xfff& fdmap); + write(mfd, &escape, sizeof(escape)); + hatch = mmap((void *)(fdmap & ~0xffful), sizeof(escape), + PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0); + close(mfd); + } + } + DPRINTF("hatch=%%p\\n", hatch); + return hatch; +} +#elif defined(__arm__) /*}{*/ +extern unsigned get_sys_munmap(void); +#define NINSTR 3 +#define NBPI 4 + +static void * +make_hatch_arm32( + ElfW(Phdr) const *const phdr, + char *next_unc, + unsigned frag_mask +) +{ + unsigned const sys_munmap = get_sys_munmap(); + unsigned code[2] = { + sys_munmap, // syscall __NR_unmap + 0xe8bd8003, // ldmia sp!,{r0,r1,pc} + }; + unsigned *hatch = 0; + DPRINTF("make_hatch %%p %%p %%x\\n", phdr, next_unc, frag_mask); + + if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) { + next_unc += phdr->p_memsz - phdr->p_filesz; // Skip over local .bss + frag_mask &= -(long)next_unc; // bytes left on page + if (2*4 <= frag_mask) { + hatch = (unsigned *)(void *)(~3ul & (long)(3+ next_unc)); + hatch[0]= code[0]; + hatch[1]= code[1]; + __clear_cache(&hatch[0], &hatch[2]); + } + else { // Does not fit at hi end of .text, so must use a new page "permanently" + unsigned long fdmap = upx_mmap_and_fd((void *)0, sizeof(code), nullptr); + unsigned mfd = -1+ (0xfff& fdmap); + write(mfd, &code, sizeof(code)); + hatch = mmap((void *)(fdmap & ~0xffful), sizeof(code), + PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0); + close(mfd); + } + } + DPRINTF("hatch=%%p\\n", hatch); + return hatch; +} +#elif defined(__mips__) /*}{*/ +static void * +make_hatch_mips( + ElfW(Phdr) const *const phdr, + char *next_unc, + unsigned frag_mask) +{ + unsigned code[3]; + // avoid gcc initializing array by copying .rodata + code[0] = 0x0000000c; // syscall +#define RS(r) ((037&(r))<<21) +#define JR 010 + code[1] = RS(30)|JR; // jr $30 # s8 + code[2] = 0x00000000; // nop + + unsigned *hatch = 0; + DPRINTF("make_hatch_mips %%p %%p %%x\\n", phdr, next_unc, frag_mask); + + if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) { + next_unc += phdr->p_memsz - phdr->p_filesz; // Skip over local .bss + frag_mask &= -(long)next_unc; // bytes left on page + if (3*4 <= frag_mask) { + hatch = (unsigned *)(void *)(~3ul & (long)(3+ next_unc)); + hatch[0]= code[0]; + hatch[1]= code[1]; + hatch[2]= code[2]; + __clear_cache(&hatch[0], &hatch[3]); + } + else { // Does not fit at hi end of .text, so must use a new page "permanently" + unsigned long fdmap = upx_mmap_and_fd((void *)0, sizeof(code), nullptr); + unsigned mfd = -1+ (0xfff& fdmap); + write(mfd, &code, sizeof(code)); + hatch = mmap((void *)(fdmap & ~0xffful), sizeof(code), + PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0); + close(mfd); + } + } + DPRINTF("hatch=%%p\\n", hatch); + return hatch; +} +#elif defined(__powerpc__) /*}{*/ +static void * +make_hatch_ppc32( + ElfW(Phdr) const *const phdr, + char *next_unc, + unsigned frag_mask) +{ + unsigned code[2]; + // avoid gcc initializing array by copying .rodata + code[0] = 0x44000002; // sc + code[1] = 0x4e800020; // blr + + unsigned *hatch = 0; + DPRINTF("make_hatch %%p %%p %%x\\n", phdr, next_unc, frag_mask); + + if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) { + next_unc += phdr->p_memsz - phdr->p_filesz; // Skip over local .bss + frag_mask &= -(long)next_unc; // bytes left on page + if (2*4 <= frag_mask) { + hatch = (unsigned *)(void *)(~3ul & (long)(3+ next_unc)); + hatch[0]= code[0]; + hatch[1]= code[1]; + // __clear_cache(&hatch[0], &hatch[2]); // FIXME + } + else { // Does not fit at hi end of .text, so must use a new page "permanently" + unsigned long fdmap = upx_mmap_and_fd((void *)0, sizeof(code), nullptr); + unsigned mfd = -1+ (0xfff& fdmap); + write(mfd, &code, sizeof(code)); + hatch = mmap((void *)(fdmap & ~0xffful), sizeof(code), + PROT_READ|PROT_EXEC, MAP_PRIVATE, mfd, 0); + close(mfd); + } + } + DPRINTF("hatch=%%p\\n", hatch); + return hatch; +} +#endif /*}*/ + +#if defined(__powerpc64__) || defined(__aarch64__) //{ bzero +static void +upx_bzero(char *p, size_t len) +{ + DPRINTF("bzero %%x %%x\\n", p, len); + if (len) do { + *p++= 0; + } while (--len); +} +#define bzero upx_bzero +#else //}{ +#define bzero(a,b) __builtin_memset(a,0,b) +#endif //} + +static void +auxv_up(ElfW(auxv_t) *av, unsigned const type, uint64_t const value) +{ + if (!av || (1& (size_t)av)) { // none, or inhibited for PT_INTERP + return; + } + DPRINTF("\\nauxv_up %%d %%p\\n", type, value); + // Multiple slots can have 'type' which wastes space but is legal. + // rtld (ld-linux) uses the last one, so we must scan the whole table. + ElfW(auxv_t) *ignore_slot = 0; + int found = 0; + for (;; ++av) { + DPRINTF(" %%d %%p\\n", av->a_type, av->a_un.a_val); + if (av->a_type == type) { + av->a_un.a_val = value; + ++found; + } + else if (av->a_type == AT_IGNORE) { + ignore_slot = av; + } + if (av->a_type==AT_NULL) { // done scanning + if (found) { + return; + } + if (ignore_slot) { + ignore_slot->a_type = type; + ignore_slot->a_un.a_val = value; + return; + } + err_exit(20); +ERR_LAB + return; + } + } +} + +// Segregate large local array, to avoid code bloat due to large displacements. +// Not 'static' to disaable inlining, to control sizeof stack frame in callers. +/*static*/ void +underlay(unsigned size, char *ptr, unsigned len) // len <= PAGE_SIZE +{ + DPRINTF("underlay size=%%u ptr=%%p len=%%u\\n", size, ptr, len); + unsigned saved[4096/sizeof(unsigned)]; + memcpy(saved, ptr, len); + mmap(ptr, size, PROT_WRITE|PROT_READ, + MAP_FIXED|MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + memcpy(ptr, saved, len); +} + +#if 0 //{ +// Exchange the bits with values 4 (PF_R, PROT_EXEC) and 1 (PF_X, PROT_READ) +// Use table lookup into a PIC-string that pre-computes the result. +unsigned PF_TO_PROT(unsigned flags) +{ + char const *table = addr_string("\x80\x04\x02\x06\x01\x05\x03\x07"); + return 7& table[flags & (PF_R|PF_W|PF_X)]; +} +#else //}{ +// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits. +#define REP8(x) \ + ((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28)) +#define EXP8(y) \ + ((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0) +#define PF_TO_PROT(pf) \ + ((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \ + ( (REP8(PROT_EXEC ) & EXP8(PF_X)) \ + |(REP8(PROT_READ ) & EXP8(PF_R)) \ + |(REP8(PROT_WRITE) & EXP8(PF_W)) \ + ) >> ((pf & (PF_R|PF_W|PF_X))<<2) )) +#endif //} + +// Find convex hull of PT_LOAD (the minimal interval which covers all PT_LOAD), +// and mmap that much, to be sure that a kernel using exec-shield-randomize +// won't place the first piece in a way that leaves no room for the rest. +static ElfW(Addr) // returns relocation constant +xfind_pages(unsigned mflags, ElfW(Phdr) const *phdr, int phnum, + ElfW(Addr) *const p_brk + , ElfW(Addr) const elfaddr +) +{ + ElfW(Addr) lo= ~0, hi= 0, addr= 0; + mflags += MAP_PRIVATE | MAP_ANONYMOUS; // '+' can optimize better than '|' + DPRINTF("xfind_pages %%x %%p %%d %%p %%p\\n", mflags, phdr, phnum, elfaddr, p_brk); + for (; --phnum>=0; ++phdr) if (PT_LOAD==phdr->p_type) { + DPRINTF(" p_vaddr=%%p p_memsz=%%p\\n", phdr->p_vaddr, phdr->p_memsz); + if (phdr->p_vaddr < lo) { + lo = phdr->p_vaddr; + } + if (hi < (phdr->p_memsz + phdr->p_vaddr)) { + hi = phdr->p_memsz + phdr->p_vaddr; + } + } + size_t PMASK = get_page_mask(); + lo -= ~PMASK & lo; // round down to page boundary + hi = PMASK & (hi - lo - PMASK -1); // page length + if (MAP_FIXED & mflags) { + addr = lo; + } + else if (0==lo) { // -pie ET_DYN + addr = elfaddr; + if (addr) { + mflags |= MAP_FIXED; + } + } + DPRINTF(" addr=%%p lo=%%p hi=%%p\\n", addr, lo, hi); + // PROT_WRITE allows testing of 64k pages on 4k Linux + addr = (ElfW(Addr))mmap((void *)addr, hi, (DEBUG ? PROT_WRITE : PROT_NONE), // FIXME XXX EVIL + mflags, -1, 0); + DPRINTF(" addr=%%p\\n", addr); + *p_brk = hi + addr; // the logical value of brk(0) + return (ElfW(Addr))(addr - lo); +} + +static ElfW(Addr) // entry address +do_xmap( + ElfW(Ehdr) const *const ehdr, + Extent *const xi, + int const fdi, + ElfW(auxv_t) *const av, + ElfW(Addr) *const p_reloc +) +{ + ElfW(Phdr) const *phdr = (ElfW(Phdr) const *)(void const *)(ehdr->e_phoff + + (char const *)ehdr); + ElfW(Addr) v_brk = 0; + ElfW(Addr) reloc = 0; + if (xi) { // compressed main program: + // C_BASE space reservation, C_TEXT compressed data and stub + ElfW(Addr) ehdr0 = *p_reloc; // the 'hi' copy! + ElfW(Phdr) *phdr0 = (ElfW(Phdr) *)(1+ (ElfW(Ehdr) *)ehdr0); // cheats .e_phoff + // Clear the 'lo' space reservation for use by PT_LOADs + ehdr0 -= phdr0[1].p_vaddr; // the 'lo' copy + if (ET_EXEC == ehdr->e_type) { + ehdr0 = phdr0[0].p_vaddr; + } + else { + reloc = ehdr0; + } + v_brk = phdr0->p_memsz + ehdr0; + munmap((void *)ehdr0, phdr0->p_memsz); + } + else { // PT_INTERP + DPRINTF("INTERP\\n", 0); + reloc = xfind_pages( + ((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, &v_brk, *p_reloc + ); + } + DPRINTF("do_xmap ehdr=%%p xi=%%p(%%x %%p) fdi=%%x\\n" + " av=%%p reloc=%%p p_reloc=%%p/%%p\\n", + ehdr, xi, (xi? xi->size: 0), (xi? xi->buf: 0), fdi, + av, reloc, p_reloc, *p_reloc); + + size_t const page_mask = get_page_mask(); + int j; + for (j=0; j < ehdr->e_phnum; ++phdr, ++j) + if (xi && PT_PHDR==phdr->p_type) { + auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc); + } else + if (PT_LOAD==phdr->p_type && phdr->p_memsz != 0) { + unsigned const prot = PF_TO_PROT(phdr->p_flags); + DPRINTF("\\n\\nLOAD@%%p p_offset=%%p p_vaddr=%%p p_filesz=%%p" + " p_memsz=%%p p_flags=%%x prot=%%x\\n", + phdr, phdr->p_offset, phdr->p_vaddr, phdr->p_filesz, + phdr->p_memsz, phdr->p_flags, prot); + if (xi && !phdr->p_offset /*&& ET_EXEC==ehdr->e_type*/) { // 1st PT_LOAD + // ? Compressed PT_INTERP must not overwrite values from compressed a.out? + auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc + ehdr->e_phoff); + auxv_up(av, AT_PHNUM, ehdr->e_phnum); + auxv_up(av, AT_PHENT, ehdr->e_phentsize); /* ancient kernels might omit! */ + //auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */ + } + Extent xo; + size_t mlen = xo.size = phdr->p_filesz; + char * addr = xo.buf = reloc + (char *)phdr->p_vaddr; + // xo.size, xo.buf are not changed except by unpackExtent() + char *const hi_addr = phdr->p_memsz + addr; // end of local .bss + char *addr2 = mlen + addr; // end of local .data + size_t frag = ~page_mask & (ElfW(Addr))addr; + mlen += frag; + addr -= frag; + +#if defined(__powerpc64__) || defined(__aarch64__) + // Round up to hardware PAGE_SIZE; allows emulator with smaller. + // But (later) still need bzero when .p_filesz < .p_memsz . + mlen += -(mlen + (size_t)addr) &~ page_mask; + DPRINTF(" mlen=%%p\\n", mlen); +#endif + + DPRINTF("mmap addr=%%p mlen=%%p offset=%%p frag=%%p prot=%%x\\n", + addr, mlen, phdr->p_offset - frag, frag, prot); + int mfd = 0; + if (xi && phdr->p_flags & PF_X) { // SELinux + // Cannot set PROT_EXEC except via mmap() into a region (Linux "vma") + // that has never had PROT_WRITE. So use a Linux-only "memory file" + // to hold the contents. + unsigned long val = upx_mmap_and_fd(addr, mlen, nullptr); + mfd = 0xfff & val; + val -= mfd; if ((char *)val != addr) err_exit(17); + --mfd; + } + else { + unsigned tprot = prot; + // Notice that first 4 args are same: mmap vs mmap_privanon + if (xi) { + tprot |= PROT_WRITE; // De-compression needs Write + tprot &= ~PROT_EXEC; // Avoid simultaneous Write and eXecute + if (addr != mmap_privanon(addr, mlen, tprot, MAP_FIXED|MAP_PRIVATE)) { + err_exit(11); + } + } + else if (addr != mmap(addr, mlen, tprot, MAP_FIXED|MAP_PRIVATE, + fdi, phdr->p_offset - frag)) { + err_exit(8); + } + } + DPRINTF("addr= %%p\\n", addr); + + if (xi) { + DPRINTF("before unpack xi=(%%p %%p xo=(%%p %%p)\\n", xi->size, xi->buf, xo.size, xo.buf); + unpackExtent(xi, &xo); // updates xi and xo + DPRINTF(" after unpack xi=(%%p %%p xo=(%%p %%p)\\n", xi->size, xi->buf, xo.size, xo.buf); + } + if (PROT_WRITE & prot) { // note: read-only .bss not supported here + // Clear to end-of-page (first part of .bss or &_end) + unsigned hi_frag = -(long)addr2 &~ page_mask; + bzero(addr2, hi_frag); + addr2 += hi_frag; // will be page aligned + } + + if (xi && phdr->p_flags & PF_X) { +#if defined(__i386__) //{ + void *const hatch = make_hatch_i386(phdr, xo.buf, ~page_mask); +#elif defined(__powerpc__) //}{ + void *const hatch = make_hatch_ppc(phdr, xo.buf, ~page_mask); +#elif defined(__arm__) //}{ + void *const hatch = make_hatch_arm(phdr, xo.buf, ~page_mask); +#endif //} + if (0!=hatch) { + // Always update AT_NULL, especially for compressed PT_INTERP. + // Clearing lo bit of av is for i386 only; else is superfluous. + auxv_up((ElfW(auxv_t) *)(~1 & (size_t)av), AT_NULL, (size_t)hatch); + } + + // SELinux: Map the contents of mfd as per *phdr. + DPRINTF("hatch protect addr=%%p mlen=%%p\\n", addr, mlen); + munmap(addr, mlen); // toss the VMA that has PROT_WRITE + if (addr != mmap(addr, mlen, prot, MAP_FIXED|MAP_SHARED, mfd, 0)) { + err_exit(9); + } + close(mfd); + } + else if ((PROT_WRITE|PROT_READ) != prot + && 0!=Pprotect(addr, mlen, prot)) { + err_exit(10); +ERR_LAB + } + if (addr2 < hi_addr) { // pages for .bss beyond last page for p_filesz + DPRINTF("zmap addr2=%%p len=%%p\\n", addr2, hi_addr - addr2); + if (addr2 != mmap_privanon(addr2, hi_addr - addr2, prot, MAP_FIXED)) { + err_exit(10); + } + } + } + if (xi && ET_DYN!=ehdr->e_type) { + // Needed only if compressed shell script invokes compressed shell. + // Besides, fold.S needs _Ehdr that is tossed + // do_brk((void *)v_brk); + } + if (p_reloc) { + *p_reloc = reloc; + } + return ehdr->e_entry + reloc; +} + + +/************************************************************************* +// upx_main - called by our entry code +// +// This function is optimized for size. +**************************************************************************/ + +void * +upx_main( // returns entry address +/*arg1*/ struct b_info const *const bi // 1st block header +/*arg2*/ , size_t const sz_compressed // total length +/*arg3*/ , ElfW(Addr) elfaddr // In: &ElfW(Ehdr) for stub +/*arg4*/ , ElfW(auxv_t) *const av +/*arg5*/ , ElfW(Ehdr) *const ehdr // temp char[sz_ehdr] for decompressing +) +{ + DPRINTF("upx_main b_info=%%p sz_compressed=%%p ehdr=%%p av=%%p\\n", + bi, sz_compressed, ehdr, av); + Extent xo, xi1, xi2; + xo.buf = (char *)ehdr; + xo.size = bi->sz_unc; // can require bi aligned(4) + xi2.buf = CONST_CAST(char *, bi); xi2.size = bi->sz_cpr + sizeof(*bi); + xi1.buf = CONST_CAST(char *, bi); xi1.size = sz_compressed; + + // ehdr = Uncompress Ehdr and Phdrs + unpackExtent(&xi2, &xo); // never filtered? + +#if defined(__i386__) || defined(__arm__) //{ + ElfW(Addr) *const p_reloc = &elfaddr; +#endif //} + ElfW(Addr) page_mask = get_page_mask(); (void)page_mask; + DPRINTF("upx_main1 .e_entry=%%p p_reloc=%%p *p_reloc=%%p page_mask=%%p\\n", + ehdr->e_entry, p_reloc, *p_reloc, page_mask); + ElfW(Phdr) *phdr = (ElfW(Phdr) *)(1+ ehdr); + + // De-compress Ehdr again into actual position, then de-compress the rest. + ElfW(Addr) entry = do_xmap(ehdr, &xi1, 0, av, p_reloc); + DPRINTF("upx_main2 entry=%%p *p_reloc=%%p\\n", entry, *p_reloc); + auxv_up(av, AT_ENTRY , entry); + + { // Map PT_INTERP program interpreter + phdr = (ElfW(Phdr) *)(1+ ehdr); + unsigned j; + for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (PT_INTERP==phdr->p_type) { + char const *const iname = *p_reloc + (char const *)phdr->p_vaddr; + int const fdi = open(iname, O_RDONLY, 0); + if (0 > fdi) { + err_exit(18); + } + if (MAX_ELF_HDR_64!=read(fdi, (void *)ehdr, MAX_ELF_HDR_64)) { +ERR_LAB + err_exit(19); + } + // We expect PT_INTERP to be ET_DYN at 0. + // Thus do_xmap will set *p_reloc = slide. + *p_reloc = 0; // kernel picks where PT_INTERP goes + entry = do_xmap(ehdr, 0, fdi, 0, p_reloc); + DPRINTF("interp p_reloc=%%p reloc=%%p\\n", p_reloc, *p_reloc); + auxv_up(av, AT_BASE, *p_reloc); // musl + close(fdi); + } + } + + return (void *)entry; +} + +#if DEBUG //{ + +static int +unsimal(unsigned x, char *ptr, int n) +{ + unsigned m = 10; + while (10 <= (x / m)) m *= 10; + while (10 <= x) { + unsigned d = x / m; + x -= m * d; + m /= 10; + ptr[n++] = '0' + d; + } + ptr[n++] = '0' + x; + return n; +} + +static int +decimal(int x, char *ptr, int n) +{ + if (x < 0) { + x = -x; + ptr[n++] = '-'; + } + return unsimal(x, ptr, n); +} + +static int +heximal(unsigned long x, char *ptr, int n) +{ + unsigned j = -1+ 2*sizeof(unsigned long); + unsigned long m = 0xful << (4 * j); + for (; j; --j, m >>= 4) { // omit leading 0 digits + if (m & x) break; + } + for (; m; --j, m >>= 4) { + unsigned d = 0xf & (x >> (4 * j)); + ptr[n++] = ((10<=d) ? ('a' - 10) : '0') + d; + } + return n; +} + +#define va_arg __builtin_va_arg +#define va_end __builtin_va_end +#define va_list __builtin_va_list +#define va_start __builtin_va_start + +static int +dprintf(char const *fmt, ...) +{ + int n= 0; + char const *literal = 0; // NULL + char buf[24]; // ~0ull == 18446744073709551615 ==> 20 chars + va_list va; va_start(va, fmt); + for (;;) { + char c = *fmt++; + if (!c) { // end of fmt + if (literal) { + goto finish; + } + break; // goto done + } + if ('%'!=c) { + if (!literal) { + literal = fmt; // 1 beyond start of literal + } + continue; + } + // '%' == c + if (literal) { +finish: + n += write(2, -1+ literal, fmt - literal); + literal = 0; // NULL + if (!c) { // fmt already ended + break; // goto done + } + } + switch (c= *fmt++) { // deficiency: does not handle _long_ + default: { // un-implemented conversion + n+= write(2, -1+ fmt, 1); + } break; + case 0: { // fmt ends with "%\0" ==> ignore + goto done; + } break; + case 'u': { + n+= write(2, buf, unsimal(va_arg(va, unsigned), buf, 0)); + } break; + case 'd': { + n+= write(2, buf, decimal(va_arg(va, int), buf, 0)); + } break; + case 'p': { + buf[0] = '0'; + buf[1] = 'x'; + n+= write(2, buf, heximal((unsigned long)va_arg(va, void *), buf, 2)); + } break; + case 'x': { + buf[0] = '0'; + buf[1] = 'x'; + n+= write(2, buf, heximal(va_arg(va, int), buf, 2)); + } break; + } // 'switch' + } +done: + va_end(va); + return n; + } +#endif //} + +/* vim:set ts=4 sw=4 et: */ diff --git a/src/stub/src/i386-linux.elf-so_entry.lds b/src/stub/src/i386-linux.elf-so_entry.lds new file mode 100644 index 00000000..8ffcb623 --- /dev/null +++ b/src/stub/src/i386-linux.elf-so_entry.lds @@ -0,0 +1,13 @@ +OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +OUTPUT_ARCH(i386) + +SECTIONS +{ + . = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */ + .text : { + } + ELFMAINX : { + *(ELFMAINX) + *(.text) + } +} diff --git a/src/stub/src/upxfd_android.c b/src/stub/src/upxfd_android.c index dadd3560..abaf74c2 100644 --- a/src/stub/src/upxfd_android.c +++ b/src/stub/src/upxfd_android.c @@ -6,15 +6,19 @@ All Rights Reserved. */ +void my_bkpt(void const *, ...); + #if defined(__i386__) //}{ -#define addr_string(string) (char *)({ \ +#define ANDROID_FRIEND 1 +#define addr_string(string) ({ \ char const *str; \ asm("call 0f; .asciz \"" string "\"; 0: pop %0" \ /*out*/ : "=r"(str) ); \ str; \ }) #elif defined(__arm__) //}{ -#define addr_string(string) (char *)({ \ +#define ANDROID_FRIEND 1 +#define addr_string(string) ({ \ char const *str; \ asm("bl 0f; .string \"" string "\"; .balign 4; 0: mov %0,lr" \ /*out*/ : "=r"(str) \ @@ -22,14 +26,151 @@ /*und*/ : "lr"); \ str; \ }) +#elif defined(__mips__) //}{ +#define ANDROID_FRIEND 0 +#define addr_string(string) ({ \ + char const *str; \ + asm("bal 0f; .asciz \"" string "\"; .balign 4\n0: move %0,$31" \ +/*out*/ : "=r"(str) \ +/* in*/ : \ +/*und*/ : "ra"); \ + str; \ +}) +#elif defined(__powerpc__) /*}{*/ +#define ANDROID_FRIEND 0 +#define addr_string(string) ({ \ + char const *str; \ + asm("bl 0f; .asciz \"" string "\"; .balign 4; 0: mflr %0" \ +/*out*/ : "=r"(str) \ +/* in*/ : \ +/*und*/ : "lr"); \ + str; \ +}) +#elif defined(__powerpc64__) //}{ +#define ANDROID_FRIEND 0 +#define addr_string(string) ({ \ + char const *str; \ + asm("bl 0f; .string \"" string "\"; .balign 4; 0: mflr %0" \ +/*out*/ : "=r"(str) \ +/* in*/ : \ +/*und*/ : "lr"); \ + str; \ +}) +#elif defined(__x86_64) //}{ +#define ANDROID_FRIEND 0 +#define addr_string(string) ({ \ + char const *str; \ + asm("call 0f; .asciz \"" string "\"; 0: pop %0" \ +/*out*/ : "=r"(str) ); \ + str; \ +}) +#elif defined(__aarch64__) //}{ +#define ANDROID_FRIEND 0 +#define addr_string(string) ({ \ + char const *str; \ + asm("bl 0f; .string \"" string "\"; .balign 4; 0: mov %0,x30" \ +/*out*/ : "=r"(str) \ +/* in*/ : \ +/*und*/ : "x30"); \ + str; \ +}) #else //}{ -# error; // only: __arm__ or __i386__ (for ARM emulator) +#define ANDROID_FRIEND 0 +#error addr_string #endif //} +#if defined(__x86_64) || defined(__i386__) //}{ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("call 0f; .asciz \"" fmt "\"; 0: pop %0" \ +/*out*/ : "=r"(r_fmt) ); \ + dprintf(r_fmt, args); \ +}) +#else //}{ +#define DPRINTF(fmt, args...) /*empty*/ +#endif //} + +#define dprintf my_bkpt + +//#include +//#include +typedef unsigned long long u64_t; +typedef unsigned int u32_t; +typedef unsigned short u16_t; +// Observed by gdb for libc-bin 2.31-13+deb11u6 on Debian 5.10.158-2 (2022-12-13) armv7l +struct stat { // __NR_stat = 106 + NR_SYSCALL_BASE + u32_t st_dev; + u32_t st_ino; + u16_t st_mode; + u16_t st_nlink; + u16_t st_uid; + u16_t st_gid; +// 0x10 + u32_t st_rdev; + u32_t st_size; + u32_t st_blksize; + u32_t st_blocks; +// 0x20 + u32_t st_atime; + u32_t st_atime_nsec; + u32_t st_mtime; + u32_t st_mtime_nsec; +// 0x30 + u32_t st_ctime; + u32_t st_ctime_nsec; + u32_t pad1; + u32_t pad2; +// 0x40 +}; +#define S_IFMT 00170000 +#define S_IFDIR 0040000 +#define S_IRWXU 00700 +#define AT_FDCWD -100 +#define restrict /**/ +#include "include/linux.h" // syscalls; i386 inlines via "int 0x80" +extern int fstatat(int dirfd, const char *restrict pathname, + struct stat *restrict statbuf, int flags); + +#define ENOENT 2 /* no such name */ +#define ENOSPC 28 /* no space left on device */ +#define ENOSYS 38 /* no such system call */ + +#if ANDROID_FRIEND //{ + +extern void *memset(void *dst, int val, size_t n); +extern int stat(char const *path, struct stat *statbuf); +extern int mkdir(char const *path, unsigned mode); + +__attribute__((__noinline__)) +static int dir_check(char const *path) +{ + struct stat sb; + memset(&sb,0xff, sizeof(sb)); // DEBUG aid + int rv = stat(path, &sb); + if (0 <= rv) { + if (S_IFDIR == (sb.st_mode & S_IFMT)) { + return 0; + } + } + if (-ENOENT == rv) { + rv = mkdir(path, S_IRWXU); + } + return rv; +} + +//#define S_IRWXU 00700 /* rwx------ User Read-Write-eXecute */ +extern void *alloca(unsigned size); +//#include // we use "typedef unsigned size_t;" +//#include + +extern unsigned getpid(void); +extern void *mempcpy(void *dst, void const *src, unsigned len); + // Upper half of ASCII (chars 0100-0177) are all legal in a Linux filename. // So the shortest code is " return 0100 + (077 & x); " // But the 5 chars which follow 'Z' ("[\\]^_") or 'z' ("{|}~\x7F") // look ugly, so substitute digits. +__attribute__((__noinline__)) static unsigned sixbit(unsigned x) { unsigned y = 037 & x; // "upper case" @@ -44,61 +185,192 @@ static unsigned sixbit(unsigned x) return x; } -#define S_IRWXU 00700 /* rwx------ User Read-Write-eXecute */ -extern void *alloca(unsigned size); -#include "include/linux.h" // syscalls; i386 inlines via "int 0x80" -extern void *mempcpy(void *dst, void const *src, unsigned len); +#define PATH_MAX 4096 /* linux/include/uapi/linux/limits.h */ -// Early 32-bit Android lacks memfd_create. +// Where to put temp file when memfd_create() fails on early 32-bit Android +__attribute__((__noinline__)) +static int create_upxfn_path(char *name, char *buf) +{ + // Construct path "/data/data/$APP_NAME/cache/upxAAA". + // Note 'mempcpy' [with 'p' in the middle!] returns the end-of-string. + char *p = mempcpy(&name[0], addr_string("/data/data/"), 11); // '/' sentinel at end + p[0] = '\0'; dir_check(name); + + // Append the name of the app + int fd = open(addr_string("/proc/self/cmdline"), O_RDONLY, 0); + int rlen = read(fd, p= buf, -1+ PATH_MAX); + close(fd); + if (rlen < 0) { + return rlen; // failure + } + p[rlen] = '\0'; // insurance sentinel + // Kernel-parsed arguments are separated by '\0'. + while (*p) ++p; // advance to end of argv[0] + + { + char *app_end = p; + // Sentinel '/' at name[10] provides safety for backing up. + while ('/' != *p) --p; // find last component of argv[0] + p = mempcpy(&name[10], p, app_end - p); + p[0] = '\0'; dir_check(name); + } + + p = mempcpy(p, addr_string("/cache"), 6); + p[0] = '\0'; dir_check(name); + p = mempcpy(p, addr_string("/upx"), 4); + pid_t pid = getpid(); + p[0] = sixbit(pid >> 0*6); + p[1] = sixbit(pid >> 1*6); + p[2] = sixbit(pid >> 2*6); + p[3]='\0'; + return 0; // success +} + +// memfd_create() gets ENOSYS on early Android. There are 32-bit x86 Android +// such as Zenfone 2 (discontinued 2018?), x86 Chromebooks (2019 and later), +// FydeOS, Windows subsystem for Android. But the main use is for developing, +// to make Android emulator running on x86_64 (Linux or Windows) run faster +// by emulating x86 instead of ARM. +// // Try /data/data/$APP_NAME/cache/upxAAA // where APP_NAME is discovered as basename(argv[0]) // and argv[0] is guessed from /proc/self/cmdline. // Also 32-bit Android has inconsistent __NR_ftruncate, // so use direct write() // -#define BUFLEN 0x2000 /* 4KiB for PATH_MAX; 8KiB for zeroing */ -#define ENOSPC 28 /* no space left on device */ +struct utsname; +extern int uname(struct utsname *); +extern char * get_upxfn_path(void); -int upxfd_android(unsigned len) // returns fd with (.st_size = len); else -ENOSPC +// To work around bug in "i386-linux-gcc-3.4.6 -m32 -march=i386" . +// gcc optimized out this code: +// uname((struct utsname *)buf); +// int const is_android = ( (('r'<<3*8)|('d'<<2*8)|('n'<<1*8)|('a'<<0*8)) +// == (0x20202020 | *(int *)buf) ); +// Specialized: does NOT consider early termination of either string, etc. +__attribute__((__noinline__)) +static int strncmplc(char const *s1, char const *s2, unsigned n) { - char *buf = alloca(BUFLEN); - char *p = mempcpy(&buf[0], addr_string("/data/data/"), 11); // '/' sentinel at end - int fd = open(addr_string("/proc/self/cmdline"), O_RDONLY, 0); - int rlen = read(fd, p, BUFLEN); - if (rlen < 0) { - return -1; + while (n--) { + int rv = (0x20 | *s1++) - (0x20 | *s2++); + if (rv) return rv; } - while (*p) { // advance to end of argv[0] - if (' '==*p) break; - ++p; - } - { - char *app_end = p; - while ('/' != *--p) ; // last component of argv[0] - p = mempcpy(&buf[10], p, app_end - p); - } - p = mempcpy(p, addr_string("/cache/upx"), 10); - pid_t pid = getpid(); - p[0] = sixbit(pid >> 0*6); - p[1] = sixbit(pid >> 1*6); - p[2] = sixbit(pid >> 2*6); - p[3]='\0'; - - fd = open(&buf[0], O_CREAT|O_EXCL|O_RDWR, S_IRWXU); - if (fd < 0) { - return -1; - } - unlink(&buf[0]); - - extern void *memset(void *dst, int c, unsigned); - memset(buf, 0, BUFLEN); - while (0 < len) { - int x = (len < BUFLEN) ? len : BUFLEN; - if (x != write(fd, buf, BUFLEN)) { - return -ENOSPC; - } - len -= x; - } - lseek(fd, 0, SEEK_SET); - return fd; + return 0; } + +#endif //} ANDROID_FRIEND + +// ANDROID_TEST: Set to 1 for testing Android implmentation using Linux on +// Raspberry Pi (arm32, perhaps running on actual arm64); else set to 0. +#define ANDROID_TEST 0 + +#define MFD_EXEC 0x10 + +unsigned long upx_mmap_and_fd( // returns (mapped_addr | (1+ fd)) + void *ptr // desired address + , unsigned datlen // mapped length + , char *pathname // 0 ==> get_upxfn_path() +) +{ + // This used to be a parameter, but was always 0 + unsigned const frag_mask = 0u; + + unsigned long addr = 0; // for result + // Early 32-bit Android did not implement memfd_create + int fd = (ANDROID_TEST ? -ENOSYS : memfd_create(addr_string("upx"), MFD_EXEC)); + +#if ANDROID_FRIEND //{ + // Varying __NR_ftruncate on Android can hurt even if memfd_create() succeeds. + // On Linux, struct utsname has 6 arrays of size 257; but size can be larger. +#define BUFLEN 4096 + void *buf = alloca(BUFLEN); *(int *)buf = 0; + uname((struct utsname *)buf); + int const not_android = (ANDROID_TEST ? 0 : strncmplc(addr_string("andr"), buf, 4)); + + // Work-around for missing memfd_create syscall on early 32-bit Android. + if (!not_android && !pathname) { // must ask + pathname = get_upxfn_path(); + } + if (!not_android && -ENOSYS == fd && pathname) { + if ('\0' == pathname[0]) { // first time; create the pathname and file + int rv = create_upxfn_path(pathname, buf); + if (rv < 0) { + return rv; + } + } + // Use the constructed path. + fd = open(pathname, O_CREAT|O_EXCL|O_RDWR, S_IRWXU); + if (fd < 0) { + return fd; + } + unlink(pathname); + } +#else //}{ !ANDROID_FRIEND: simple! + int not_android = 1; + (void)pathname; // dead: obviated by memfd_create() +#endif //} + + // Set the file length + unsigned const frag = frag_mask & (unsigned)ptr; + ptr -= frag; // page-aligned + datlen += frag; + if (datlen) { + if (not_android) { // Linux ftruncate() is well-behaved + int rv = ftruncate(fd, datlen); + if (rv < 0) { + return rv; + } + } +#if ANDROID_FRIEND //{ + else { // !not_android: ftruncate has varying system call number on 32-bit + memset(buf, 0, BUFLEN); + unsigned wlen = datlen; + while (0 < wlen) { + int x = (wlen < BUFLEN) ? wlen : BUFLEN; + if (x != write(fd, buf, x)) { + return -ENOSPC; + } + wlen -= x; + } + lseek(fd, 0, SEEK_SET); // go back to the beginning + } +#endif //} + } + if (frag_mask && ptr) { // Preserve entire page that contains *ptr + write(fd, ptr, 1+ frag_mask); + } + addr = (unsigned long)mmap(ptr, datlen , PROT_WRITE | PROT_READ, + MAP_SHARED | (ptr ? MAP_FIXED : 0), fd, 0); + if ((~0ul<<12) < addr) { // error + return addr; + } + return addr | (1+ fd); +} + +#if 0 //{ test +char name[1000]; + +int main(int argc, char *argv[]) +{ + upx_mmap_and_fd(0, 5000, 0); +} + +void *mempcpy(void *adst, void const *asrc, unsigned len) +{ + char *dst = adst; + char const *src = asrc; + if (len) do { + *dst++ = *src++; + } while (--len); + return dst; +} + +void *memset(void *adst, unsigned val, unsigned len) +{ + char *dst = adst; + if (len) do { + *dst++ = val; + } while (--len); + return adst; +} +#endif //} diff --git a/src/stub/tmp/i386-bsd.elf-fold.map b/src/stub/tmp/i386-bsd.elf-fold.map index 9473b93d..fa65e40c 100644 --- a/src/stub/tmp/i386-bsd.elf-fold.map +++ b/src/stub/tmp/i386-bsd.elf-fold.map @@ -9,45 +9,46 @@ Linker script and memory map TARGET(elf32-i386) 0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc) -.text 0x0000000000c01080 0x698 +.text 0x0000000000c01080 0x768 *(.text) .text 0x0000000000c01080 0xc4 tmp/i386-bsd.elf-fold.o - .text 0x0000000000c01144 0x564 tmp/i386-bsd.elf-main.o - 0x0000000000c01570 upx_main - .text 0x0000000000c016a8 0x6d tmp/i386-bsd.syscall.o - 0x0000000000c01711 waitpid - 0x0000000000c016e5 munmap - 0x0000000000c016f9 execve - 0x0000000000c016f1 getpid - 0x0000000000c01701 ftruncate - 0x0000000000c016a8 mmap - 0x0000000000c01709 nanosleep - 0x0000000000c016d9 write - 0x0000000000c016d5 read - 0x0000000000c0170d unlink - 0x0000000000c016fd fork - 0x0000000000c01705 gettimeofday - 0x0000000000c016ed access - 0x0000000000c016cd exit - 0x0000000000c016cc brk - 0x0000000000c016dd open - 0x0000000000c016e9 mprotect - 0x0000000000c016f5 fcntl - 0x0000000000c016e1 close + .text 0x0000000000c01144 0x632 tmp/i386-bsd.elf-main.o + 0x0000000000c0162f upx_main + *fill* 0x0000000000c01776 0x2 00 + .text 0x0000000000c01778 0x6d tmp/i386-bsd.syscall.o + 0x0000000000c017e1 waitpid + 0x0000000000c017b5 munmap + 0x0000000000c017c9 execve + 0x0000000000c017c1 getpid + 0x0000000000c017d1 ftruncate + 0x0000000000c01778 mmap + 0x0000000000c017d9 nanosleep + 0x0000000000c017a9 write + 0x0000000000c017a5 read + 0x0000000000c017dd unlink + 0x0000000000c017cd fork + 0x0000000000c017d5 gettimeofday + 0x0000000000c017bd access + 0x0000000000c0179d exit + 0x0000000000c0179c brk + 0x0000000000c017ad open + 0x0000000000c017b9 mprotect + 0x0000000000c017c5 fcntl + 0x0000000000c017b1 close *(.data) - *fill* 0x0000000000c01715 0x3 00 - .data 0x0000000000c01718 0x0 tmp/i386-bsd.elf-fold.o - .data 0x0000000000c01718 0x0 tmp/i386-bsd.elf-main.o - .data 0x0000000000c01718 0x0 tmp/i386-bsd.syscall.o + *fill* 0x0000000000c017e5 0x3 00 + .data 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-fold.o + .data 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-main.o + .data 0x0000000000c017e8 0x0 tmp/i386-bsd.syscall.o .data -.bss 0x0000000000c01718 0x0 - .bss 0x0000000000c01718 0x0 tmp/i386-bsd.elf-fold.o - .bss 0x0000000000c01718 0x0 tmp/i386-bsd.elf-main.o - .bss 0x0000000000c01718 0x0 tmp/i386-bsd.syscall.o +.bss 0x0000000000c017e8 0x0 + .bss 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-fold.o + .bss 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-main.o + .bss 0x0000000000c017e8 0x0 tmp/i386-bsd.syscall.o -.rel.dyn 0x0000000000c01718 0x0 +.rel.dyn 0x0000000000c017e8 0x0 .rel.text 0x0000000000000000 0x0 tmp/i386-bsd.elf-fold.o LOAD tmp/i386-bsd.elf-fold.o LOAD tmp/i386-bsd.elf-main.o diff --git a/src/stub/tmp/i386-bsd.elf.execve-fold.map b/src/stub/tmp/i386-bsd.elf.execve-fold.map index d8904f4a..8e8add03 100644 --- a/src/stub/tmp/i386-bsd.elf.execve-fold.map +++ b/src/stub/tmp/i386-bsd.elf.execve-fold.map @@ -13,7 +13,7 @@ TARGET(elf32-i386) *(.text) .text 0x0000000000401080 0x1c tmp/i386-bsd.elf.execve-fold.o .text 0x000000000040109c 0x2d5 tmp/i386-bsd.elf.execve-main.o - 0x0000000000401153 upx_main + 0x0000000000401157 upx_main *fill* 0x0000000000401371 0x3 00 .text 0x0000000000401374 0x6d tmp/i386-bsd.syscall.o 0x00000000004013dd waitpid diff --git a/src/stub/tmp/i386-linux.elf-entry.bin.dump b/src/stub/tmp/i386-linux.elf-entry.bin.dump index 0b528f04..569d1442 100644 --- a/src/stub/tmp/i386-linux.elf-entry.bin.dump +++ b/src/stub/tmp/i386-linux.elf-entry.bin.dump @@ -2,659 +2,38 @@ file format elf32-i386 Sections: Idx Name Size VMA LMA File off Algn Flags - 0 LEXEC000 06 0 0 034 2**0 CONTENTS - 1 LEXEC009 0 0 0 03a 2**0 CONTENTS - 2 LEXEC010 0c 0 0 03a 2**0 CONTENTS - 3 N2BSMA10 03 0 0 046 2**0 CONTENTS - 4 N2BFAS10 02 0 0 049 2**0 CONTENTS - 5 N2BFAS11 06 0 0 04b 2**0 CONTENTS - 6 N2BDEC10 0b 0 0 051 2**0 CONTENTS - 7 N2BSMA20 05 0 0 05c 2**0 CONTENTS - 8 N2BFAS20 09 0 0 061 2**0 CONTENTS - 9 N2BDEC20 0d 0 0 06a 2**0 CONTENTS - 10 N2BSMA30 0d 0 0 077 2**0 CONTENTS - 11 N2BFAS30 0f 0 0 084 2**0 CONTENTS - 12 N2BDEC30 03e 0 0 093 2**0 CONTENTS - 13 N2BSMA40 0d 0 0 0d1 2**0 CONTENTS - 14 N2BFAS40 0f 0 0 0de 2**0 CONTENTS - 15 N2BSMA50 02 0 0 0ed 2**0 CONTENTS - 16 N2BFAS50 03 0 0 0ef 2**0 CONTENTS - 17 N2BDEC50 09 0 0 0f2 2**0 CONTENTS - 18 N2BSMA60 0c 0 0 0fb 2**0 CONTENTS - 19 N2BFAS60 019 0 0 0107 2**0 CONTENTS - 20 N2BFAS61 016 0 0 0120 2**0 CONTENTS - 21 N2BDEC60 0 0 0 0136 2**0 CONTENTS - 22 N2DSMA10 03 0 0 0136 2**0 CONTENTS - 23 N2DFAS10 02 0 0 0139 2**0 CONTENTS - 24 N2DFAS11 06 0 0 013b 2**0 CONTENTS - 25 N2DDEC10 0b 0 0 0141 2**0 CONTENTS - 26 N2DSMA20 05 0 0 014c 2**0 CONTENTS - 27 N2DFAS20 09 0 0 0151 2**0 CONTENTS - 28 N2DDEC20 0d 0 0 015a 2**0 CONTENTS - 29 N2DSMA30 0d 0 0 0167 2**0 CONTENTS - 30 N2DFAS30 0f 0 0 0174 2**0 CONTENTS - 31 N2DDEC30 052 0 0 0183 2**0 CONTENTS - 32 N2DSMA40 0d 0 0 01d5 2**0 CONTENTS - 33 N2DFAS40 0f 0 0 01e2 2**0 CONTENTS - 34 N2DSMA50 02 0 0 01f1 2**0 CONTENTS - 35 N2DFAS50 03 0 0 01f3 2**0 CONTENTS - 36 N2DDEC50 09 0 0 01f6 2**0 CONTENTS - 37 N2DSMA60 0c 0 0 01ff 2**0 CONTENTS - 38 N2DFAS60 019 0 0 020b 2**0 CONTENTS - 39 N2DFAS61 016 0 0 0224 2**0 CONTENTS - 40 N2DDEC60 0 0 0 023a 2**0 CONTENTS - 41 N2ESMA10 03 0 0 023a 2**0 CONTENTS - 42 N2EFAS10 02 0 0 023d 2**0 CONTENTS - 43 N2EFAS11 06 0 0 023f 2**0 CONTENTS - 44 N2EDEC10 0b 0 0 0245 2**0 CONTENTS - 45 N2ESMA20 05 0 0 0250 2**0 CONTENTS - 46 N2EFAS20 09 0 0 0255 2**0 CONTENTS - 47 N2EDEC20 0d 0 0 025e 2**0 CONTENTS - 48 N2ESMA30 0d 0 0 026b 2**0 CONTENTS - 49 N2EFAS30 0f 0 0 0278 2**0 CONTENTS - 50 N2EDEC30 05f 0 0 0287 2**0 CONTENTS - 51 N2ESMA40 0d 0 0 02e6 2**0 CONTENTS - 52 N2EFAS40 0f 0 0 02f3 2**0 CONTENTS - 53 N2ESMA50 02 0 0 0302 2**0 CONTENTS - 54 N2EFAS50 03 0 0 0304 2**0 CONTENTS - 55 N2EDEC50 09 0 0 0307 2**0 CONTENTS - 56 N2ESMA60 0c 0 0 0310 2**0 CONTENTS - 57 N2EFAS60 019 0 0 031c 2**0 CONTENTS - 58 N2EFAS61 016 0 0 0335 2**0 CONTENTS - 59 N2EDEC60 0 0 0 034b 2**0 CONTENTS - 60 LZMA_DEC00 02e 0 0 034b 2**0 CONTENTS - 61 LZMA_ELF00 048 0 0 0379 2**0 CONTENTS - 62 LZMA_DEC10 0a86 0 0 03c1 2**0 CONTENTS - 63 LZMA_DEC20 0a86 0 0 0e47 2**0 CONTENTS - 64 LZMA_DEC30 01a 0 0 018cd 2**0 CONTENTS - 65 CALLTR00 0e 0 0 018e7 2**0 CONTENTS - 66 CTCLEVE1 05 0 0 018f5 2**0 CONTENTS - 67 CALLTR01 05 0 0 018fa 2**0 CONTENTS - 68 CTBSHR01 04 0 0 018ff 2**0 CONTENTS - 69 CTBROR01 02 0 0 01903 2**0 CONTENTS - 70 CTBSWA01 05 0 0 01905 2**0 CONTENTS - 71 CALLTR02 0e 0 0 0190a 2**0 CONTENTS - 72 CALLTR10 05 0 0 01918 2**0 CONTENTS - 73 CALLTRE8 02 0 0 0191d 2**0 CONTENTS - 74 CALLTRE9 02 0 0 0191f 2**0 CONTENTS - 75 CALLTR11 04 0 0 01921 2**0 CONTENTS - 76 CTCLEVE2 05 0 0 01925 2**0 CONTENTS - 77 CALLTR12 02 0 0 0192a 2**0 CONTENTS - 78 CTBSHR11 04 0 0 0192c 2**0 CONTENTS - 79 CTBROR11 02 0 0 01930 2**0 CONTENTS - 80 CTBSWA11 05 0 0 01932 2**0 CONTENTS - 81 CALLTR13 05 0 0 01937 2**0 CONTENTS - 82 LEXEC015 01d 0 0 0193c 2**0 CONTENTS - 83 LXUNF000 02 0 0 01959 2**0 CONTENTS - 84 LXUNF002 05 0 0 0195b 2**0 CONTENTS - 85 MRUBYTE0 02 0 0 01960 2**0 CONTENTS - 86 LXMRU005 05 0 0 01962 2**0 CONTENTS - 87 LXMRU006 07 0 0 01967 2**0 CONTENTS - 88 LXMRU007 07 0 0 0196e 2**0 CONTENTS - 89 LXUNF008 04 0 0 01975 2**0 CONTENTS - 90 LXUNF010 05 0 0 01979 2**0 CONTENTS - 91 LXJCC010 03 0 0 0197e 2**0 CONTENTS - 92 LXMRU045 03 0 0 01981 2**0 CONTENTS - 93 LXMRU046 02 0 0 01984 2**0 CONTENTS - 94 LXJCC020 02 0 0 01986 2**0 CONTENTS - 95 LXJCC021 05 0 0 01988 2**0 CONTENTS - 96 LXJCC023 07 0 0 0198d 2**0 CONTENTS - 97 LXUNF037 02 0 0 01994 2**0 CONTENTS - 98 LXUNF386 01 0 0 01996 2**0 CONTENTS - 99 LXUNF387 09 0 0 01997 2**0 CONTENTS -100 LXUNF388 03 0 0 019a0 2**0 CONTENTS -101 LXUNF486 04 0 0 019a3 2**0 CONTENTS -102 LXUNF487 02 0 0 019a7 2**0 CONTENTS -103 LXMRU065 05 0 0 019a9 2**0 CONTENTS -104 MRUBYTE3 02 0 0 019ae 2**0 CONTENTS -105 MRUARB30 01 0 0 019b0 2**0 CONTENTS -106 MRUBITS3 02 0 0 019b1 2**0 CONTENTS -107 MRUARB40 04 0 0 019b3 2**0 CONTENTS -108 LXMRU070 08 0 0 019b7 2**0 CONTENTS -109 MRUBYTE4 03 0 0 019bf 2**0 CONTENTS -110 MRUBITS4 02 0 0 019c2 2**0 CONTENTS -111 MRUARB50 06 0 0 019c4 2**0 CONTENTS -112 LXMRU080 03 0 0 019ca 2**0 CONTENTS -113 MRUBYTE5 02 0 0 019cd 2**0 CONTENTS -114 MRUARB60 01 0 0 019cf 2**0 CONTENTS -115 MRUBITS5 02 0 0 019d0 2**0 CONTENTS -116 MRUARB70 04 0 0 019d2 2**0 CONTENTS -117 LXMRU090 0b 0 0 019d6 2**0 CONTENTS -118 MRUBYTE6 02 0 0 019e1 2**0 CONTENTS -119 MRUARB80 01 0 0 019e3 2**0 CONTENTS -120 MRUBITS6 02 0 0 019e4 2**0 CONTENTS -121 MRUARB90 04 0 0 019e6 2**0 CONTENTS -122 LXMRU100 010 0 0 019ea 2**0 CONTENTS -123 LXUNF040 05 0 0 019fa 2**0 CONTENTS -124 LXMRU110 03 0 0 019ff 2**0 CONTENTS -125 LXMRU111 02 0 0 01a02 2**0 CONTENTS -126 LXUNF041 07 0 0 01a04 2**0 CONTENTS -127 LXUNF042 0 0 0 01a0b 2**0 CONTENTS -128 LEXEC016 05 0 0 01a0b 2**0 CONTENTS -129 LXMRU010 01 0 0 01a10 2**0 CONTENTS -130 LXJMPA00 02 0 0 01a11 2**0 CONTENTS -131 LXCALLB0 02 0 0 01a13 2**0 CONTENTS -132 LXUNF021 06 0 0 01a15 2**0 CONTENTS -133 LXMRU022 03 0 0 01a1b 2**0 CONTENTS -134 LXJMPA01 02 0 0 01a1e 2**0 CONTENTS -135 LXCALLB1 02 0 0 01a20 2**0 CONTENTS -136 MRUBITS1 01 0 0 01a22 2**0 CONTENTS -137 LXMRU030 02 0 0 01a23 2**0 CONTENTS -138 MRUBYTE1 02 0 0 01a25 2**0 CONTENTS -139 MRUARB10 01 0 0 01a27 2**0 CONTENTS -140 LXMRU040 02 0 0 01a28 2**0 CONTENTS -141 LXUNF030 06 0 0 01a2a 2**0 CONTENTS -142 LXJCC000 08 0 0 01a30 2**0 CONTENTS -143 LXCJ0MRU 02 0 0 01a38 2**0 CONTENTS -144 LXCJ1MRU 03 0 0 01a3a 2**0 CONTENTS -145 LXCALJMP 03 0 0 01a3d 2**0 CONTENTS -146 LXCALL00 02 0 0 01a40 2**0 CONTENTS -147 LXCALL01 03 0 0 01a42 2**0 CONTENTS -148 LXCJ2MRU 02 0 0 01a45 2**0 CONTENTS -149 LXCJ4MRU 02 0 0 01a47 2**0 CONTENTS -150 LXCJ6MRU 02 0 0 01a49 2**0 CONTENTS -151 LXCJ7MRU 02 0 0 01a4b 2**0 CONTENTS -152 LXCJ8MRU 03 0 0 01a4d 2**0 CONTENTS -153 LXUNF034 05 0 0 01a50 2**0 CONTENTS -154 LXMRU055 02 0 0 01a55 2**0 CONTENTS -155 MRUBYTE2 05 0 0 01a57 2**0 CONTENTS -156 MRUBITS2 05 0 0 01a5c 2**0 CONTENTS -157 MRUARB20 05 0 0 01a61 2**0 CONTENTS -158 LXMRU057 06 0 0 01a66 2**0 CONTENTS -159 LXMRU058 01 0 0 01a6c 2**0 CONTENTS -160 LXUNF035 06 0 0 01a6d 2**0 CONTENTS -161 ctok32.00 07 0 0 01a73 2**0 CONTENTS -162 ctok32.10 0e 0 0 01a7a 2**0 CONTENTS -163 ctok32.20 020 0 0 01a88 2**0 CONTENTS -164 ctok32.30 0a 0 0 01aa8 2**0 CONTENTS -165 ctok32.40 05 0 0 01ab2 2**0 CONTENTS -166 LEXEC017 02 0 0 01ab7 2**0 CONTENTS -167 LEXEC020 074 0 0 01abc 2**2 CONTENTS + 0 ELFMAINX 055b 0 0 034 2**2 CONTENTS + 1 ELFMAINZ 0a 0 0 058f 2**0 CONTENTS SYMBOL TABLE: -00000000 l d N2BSMA10 0 N2BSMA10 -00000000 l d N2BFAS11 0 N2BFAS11 -00000000 l d N2BDEC10 0 N2BDEC10 -00000000 l d N2BDEC20 0 N2BDEC20 -00000000 l d N2BDEC30 0 N2BDEC30 -00000000 l d N2BDEC50 0 N2BDEC50 -00000000 l d N2BFAS61 0 N2BFAS61 -00000000 l d N2BDEC60 0 N2BDEC60 -00000000 l d N2DSMA10 0 N2DSMA10 -00000000 l d N2DFAS11 0 N2DFAS11 -00000000 l d N2DDEC10 0 N2DDEC10 -00000000 l d N2DDEC20 0 N2DDEC20 -00000000 l d N2DDEC30 0 N2DDEC30 -00000000 l d N2DDEC50 0 N2DDEC50 -00000000 l d N2DFAS61 0 N2DFAS61 -00000000 l d N2DDEC60 0 N2DDEC60 -00000000 l d N2ESMA10 0 N2ESMA10 -00000000 l d N2EFAS11 0 N2EFAS11 -00000000 l d N2EDEC10 0 N2EDEC10 -00000000 l d N2EDEC20 0 N2EDEC20 -00000000 l d N2EDEC30 0 N2EDEC30 -00000000 l d N2EDEC50 0 N2EDEC50 -00000000 l d N2EFAS61 0 N2EFAS61 -00000000 l d N2EDEC60 0 N2EDEC60 -00000000 l d CALLTR00 0 CALLTR00 -00000000 l d CALLTR10 0 CALLTR10 -00000000 l d CALLTR11 0 CALLTR11 -00000000 l d CALLTR13 0 CALLTR13 -00000000 l d LXUNF010 0 LXUNF010 -00000000 l d LXJCC010 0 LXJCC010 -00000000 l d LXUNF037 0 LXUNF037 -00000000 l d LXMRU070 0 LXMRU070 -00000000 l d LXMRU100 0 LXMRU100 -00000000 l d LXUNF040 0 LXUNF040 -00000000 l d LXUNF042 0 LXUNF042 -00000000 l d LXMRU030 0 LXMRU030 -00000000 l d LXUNF030 0 LXUNF030 -00000000 l d LXCJ8MRU 0 LXCJ8MRU -00000000 l d LXUNF034 0 LXUNF034 -00000000 l d ctok32.00 0 ctok32.00 -00000000 l d ctok32.10 0 ctok32.10 -00000000 l d ctok32.20 0 ctok32.20 -00000000 l d ctok32.40 0 ctok32.40 -00000000 l d LEXEC020 0 LEXEC020 -00000000 l d LEXEC000 0 LEXEC000 -00000000 l d LEXEC009 0 LEXEC009 -00000000 l d LEXEC010 0 LEXEC010 -00000000 l d N2BFAS10 0 N2BFAS10 -00000000 l d N2BSMA20 0 N2BSMA20 -00000000 l d N2BFAS20 0 N2BFAS20 -00000000 l d N2BSMA30 0 N2BSMA30 -00000000 l d N2BFAS30 0 N2BFAS30 -00000000 l d N2BSMA40 0 N2BSMA40 -00000000 l d N2BFAS40 0 N2BFAS40 -00000000 l d N2BSMA50 0 N2BSMA50 -00000000 l d N2BFAS50 0 N2BFAS50 -00000000 l d N2BSMA60 0 N2BSMA60 -00000000 l d N2BFAS60 0 N2BFAS60 -00000000 l d N2DFAS10 0 N2DFAS10 -00000000 l d N2DSMA20 0 N2DSMA20 -00000000 l d N2DFAS20 0 N2DFAS20 -00000000 l d N2DSMA30 0 N2DSMA30 -00000000 l d N2DFAS30 0 N2DFAS30 -00000000 l d N2DSMA40 0 N2DSMA40 -00000000 l d N2DFAS40 0 N2DFAS40 -00000000 l d N2DSMA50 0 N2DSMA50 -00000000 l d N2DFAS50 0 N2DFAS50 -00000000 l d N2DSMA60 0 N2DSMA60 -00000000 l d N2DFAS60 0 N2DFAS60 -00000000 l d N2EFAS10 0 N2EFAS10 -00000000 l d N2ESMA20 0 N2ESMA20 -00000000 l d N2EFAS20 0 N2EFAS20 -00000000 l d N2ESMA30 0 N2ESMA30 -00000000 l d N2EFAS30 0 N2EFAS30 -00000000 l d N2ESMA40 0 N2ESMA40 -00000000 l d N2EFAS40 0 N2EFAS40 -00000000 l d N2ESMA50 0 N2ESMA50 -00000000 l d N2EFAS50 0 N2EFAS50 -00000000 l d N2ESMA60 0 N2ESMA60 -00000000 l d N2EFAS60 0 N2EFAS60 -00000000 l d LZMA_DEC00 0 LZMA_DEC00 -00000000 l d LZMA_ELF00 0 LZMA_ELF00 -00000000 l d LZMA_DEC10 0 LZMA_DEC10 -00000000 l d LZMA_DEC20 0 LZMA_DEC20 -00000000 l d LZMA_DEC30 0 LZMA_DEC30 -00000000 l d CTCLEVE1 0 CTCLEVE1 -00000000 l d CALLTR01 0 CALLTR01 -00000000 l d CTBSHR01 0 CTBSHR01 -00000000 l d CTBROR01 0 CTBROR01 -00000000 l d CTBSWA01 0 CTBSWA01 -00000000 l d CALLTR02 0 CALLTR02 -00000000 l d CALLTRE8 0 CALLTRE8 -00000000 l d CALLTRE9 0 CALLTRE9 -00000000 l d CTCLEVE2 0 CTCLEVE2 -00000000 l d CALLTR12 0 CALLTR12 -00000000 l d CTBSHR11 0 CTBSHR11 -00000000 l d CTBROR11 0 CTBROR11 -00000000 l d CTBSWA11 0 CTBSWA11 -00000000 l d LEXEC015 0 LEXEC015 -00000000 l d LXUNF000 0 LXUNF000 -00000000 l d LXUNF002 0 LXUNF002 -00000000 l d MRUBYTE0 0 MRUBYTE0 -00000000 l d LXMRU005 0 LXMRU005 -00000000 l d LXMRU006 0 LXMRU006 -00000000 l d LXMRU007 0 LXMRU007 -00000000 l d LXUNF008 0 LXUNF008 -00000000 l d LXMRU045 0 LXMRU045 -00000000 l d LXMRU046 0 LXMRU046 -00000000 l d LXJCC020 0 LXJCC020 -00000000 l d LXJCC021 0 LXJCC021 -00000000 l d LXJCC023 0 LXJCC023 -00000000 l d LXUNF386 0 LXUNF386 -00000000 l d LXUNF387 0 LXUNF387 -00000000 l d LXUNF388 0 LXUNF388 -00000000 l d LXUNF486 0 LXUNF486 -00000000 l d LXUNF487 0 LXUNF487 -00000000 l d LXMRU065 0 LXMRU065 -00000000 l d MRUBYTE3 0 MRUBYTE3 -00000000 l d MRUARB30 0 MRUARB30 -00000000 l d MRUBITS3 0 MRUBITS3 -00000000 l d MRUARB40 0 MRUARB40 -00000000 l d MRUBYTE4 0 MRUBYTE4 -00000000 l d MRUBITS4 0 MRUBITS4 -00000000 l d MRUARB50 0 MRUARB50 -00000000 l d LXMRU080 0 LXMRU080 -00000000 l d MRUBYTE5 0 MRUBYTE5 -00000000 l d MRUARB60 0 MRUARB60 -00000000 l d MRUBITS5 0 MRUBITS5 -00000000 l d MRUARB70 0 MRUARB70 -00000000 l d LXMRU090 0 LXMRU090 -00000000 l d MRUBYTE6 0 MRUBYTE6 -00000000 l d MRUARB80 0 MRUARB80 -00000000 l d MRUBITS6 0 MRUBITS6 -00000000 l d MRUARB90 0 MRUARB90 -00000000 l d LXMRU110 0 LXMRU110 -00000000 l d LXMRU111 0 LXMRU111 -00000000 l d LXUNF041 0 LXUNF041 -00000000 l d LEXEC016 0 LEXEC016 -00000000 l d LXMRU010 0 LXMRU010 -00000000 l d LXJMPA00 0 LXJMPA00 -00000000 l d LXCALLB0 0 LXCALLB0 -00000000 l d LXUNF021 0 LXUNF021 -00000000 l d LXMRU022 0 LXMRU022 -00000000 l d LXJMPA01 0 LXJMPA01 -00000000 l d LXCALLB1 0 LXCALLB1 -00000000 l d MRUBITS1 0 MRUBITS1 -00000000 l d MRUBYTE1 0 MRUBYTE1 -00000000 l d MRUARB10 0 MRUARB10 -00000000 l d LXMRU040 0 LXMRU040 -00000000 l d LXJCC000 0 LXJCC000 -00000000 l d LXCJ0MRU 0 LXCJ0MRU -00000000 l d LXCJ1MRU 0 LXCJ1MRU -00000000 l d LXCALJMP 0 LXCALJMP -00000000 l d LXCALL00 0 LXCALL00 -00000000 l d LXCALL01 0 LXCALL01 -00000000 l d LXCJ2MRU 0 LXCJ2MRU -00000000 l d LXCJ4MRU 0 LXCJ4MRU -00000000 l d LXCJ6MRU 0 LXCJ6MRU -00000000 l d LXCJ7MRU 0 LXCJ7MRU -00000000 l d LXMRU055 0 LXMRU055 -00000000 l d MRUBYTE2 0 MRUBYTE2 -00000000 l d MRUBITS2 0 MRUBITS2 -00000000 l d MRUARB20 0 MRUARB20 -00000000 l d LXMRU057 0 LXMRU057 -00000000 l d LXMRU058 0 LXMRU058 -00000000 l d LXUNF035 0 LXUNF035 -00000000 l d ctok32.30 0 ctok32.30 -00000000 l d LEXEC017 0 LEXEC017 -00000000 g LEXEC000 0 _start -00000000 *UND* 0 lzma_stack_adjust -00000000 *UND* 0 lzma_u_len -00000000 *UND* 0 lzma_c_len -00000000 *UND* 0 lzma_properties -00000000 *UND* 0 filter_length -00000000 *UND* 0 filter_cto -00000000 *UND* 0 NMRU +00000000 l d ELFMAINX 0 ELFMAINX +00000000 l d ELFMAINZ 0 ELFMAINZ +000003e3 g F ELFMAINX 0178 upx_mmap_and_fd 00000000 *UND* 0 O_BINFO - -RELOCATION RECORDS FOR [LEXEC000]: -OFFSET TYPE VALUE -00000002 R_386_PC32 LEXEC020 - -RELOCATION RECORDS FOR [N2BSMA10]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2BDEC10 - -RELOCATION RECORDS FOR [N2BFAS10]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2BDEC10 - -RELOCATION RECORDS FOR [N2BSMA20]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2BSMA10 - -RELOCATION RECORDS FOR [N2BFAS20]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2BFAS11 - -RELOCATION RECORDS FOR [N2BSMA30]: -OFFSET TYPE VALUE -0000000c R_386_PC8 N2BDEC20 - -RELOCATION RECORDS FOR [N2BFAS30]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2BDEC20 -0000000e R_386_PC8 N2BDEC20 - -RELOCATION RECORDS FOR [N2BDEC30]: -OFFSET TYPE VALUE -00000011 R_386_PC8 N2BDEC60 -0000002f R_386_PC8 N2BDEC50 - -RELOCATION RECORDS FOR [N2BSMA40]: -OFFSET TYPE VALUE -0000000c R_386_PC8 N2BDEC30 - -RELOCATION RECORDS FOR [N2BFAS40]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2BDEC30 -0000000e R_386_PC8 N2BDEC30 - -RELOCATION RECORDS FOR [N2BSMA60]: -OFFSET TYPE VALUE -00000008 R_386_PC32 N2BDEC10 - -RELOCATION RECORDS FOR [N2BFAS60]: -OFFSET TYPE VALUE -0000000a R_386_PC8 N2BFAS61 -00000015 R_386_PC32 N2BDEC10 - -RELOCATION RECORDS FOR [N2BFAS61]: -OFFSET TYPE VALUE -00000012 R_386_PC32 N2BDEC10 - -RELOCATION RECORDS FOR [N2DSMA10]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2DDEC10 - -RELOCATION RECORDS FOR [N2DFAS10]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2DDEC10 - -RELOCATION RECORDS FOR [N2DSMA20]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2DSMA10 - -RELOCATION RECORDS FOR [N2DFAS20]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2DFAS11 - -RELOCATION RECORDS FOR [N2DSMA30]: -OFFSET TYPE VALUE -0000000c R_386_PC8 N2DDEC30 - -RELOCATION RECORDS FOR [N2DFAS30]: -OFFSET TYPE VALUE -00000005 R_386_PC8 N2DDEC30 -0000000e R_386_PC8 N2DDEC30 - -RELOCATION RECORDS FOR [N2DDEC30]: -OFFSET TYPE VALUE -0000000f R_386_PC8 N2DDEC20 -00000021 R_386_PC8 N2DDEC60 -00000043 R_386_PC8 N2DDEC50 - -RELOCATION RECORDS FOR [N2DSMA40]: -OFFSET TYPE VALUE -0000000c R_386_PC8 N2DDEC30 - -RELOCATION RECORDS FOR [N2DFAS40]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2DDEC30 -0000000e R_386_PC8 N2DDEC30 - -RELOCATION RECORDS FOR [N2DSMA60]: -OFFSET TYPE VALUE -00000008 R_386_PC32 N2DDEC10 - -RELOCATION RECORDS FOR [N2DFAS60]: -OFFSET TYPE VALUE -0000000a R_386_PC8 N2DFAS61 -00000015 R_386_PC32 N2DDEC10 - -RELOCATION RECORDS FOR [N2DFAS61]: -OFFSET TYPE VALUE -00000012 R_386_PC32 N2DDEC10 - -RELOCATION RECORDS FOR [N2ESMA10]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2EDEC10 - -RELOCATION RECORDS FOR [N2EFAS10]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2EDEC10 - -RELOCATION RECORDS FOR [N2ESMA20]: -OFFSET TYPE VALUE -00000001 R_386_PC8 N2ESMA10 - -RELOCATION RECORDS FOR [N2EFAS20]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2EFAS11 - -RELOCATION RECORDS FOR [N2ESMA30]: -OFFSET TYPE VALUE -0000000c R_386_PC8 N2EDEC30 - -RELOCATION RECORDS FOR [N2EFAS30]: -OFFSET TYPE VALUE -00000005 R_386_PC8 N2EDEC30 -0000000e R_386_PC8 N2EDEC30 - -RELOCATION RECORDS FOR [N2EDEC30]: -OFFSET TYPE VALUE -0000000f R_386_PC8 N2EDEC20 -0000001e R_386_PC8 N2EDEC50 -00000030 R_386_PC8 N2EDEC60 - -RELOCATION RECORDS FOR [N2ESMA40]: -OFFSET TYPE VALUE -0000000c R_386_PC8 N2EDEC30 - -RELOCATION RECORDS FOR [N2EFAS40]: -OFFSET TYPE VALUE -00000003 R_386_PC8 N2EDEC30 -0000000e R_386_PC8 N2EDEC30 - -RELOCATION RECORDS FOR [N2ESMA60]: -OFFSET TYPE VALUE -00000008 R_386_PC32 N2EDEC10 - -RELOCATION RECORDS FOR [N2EFAS60]: -OFFSET TYPE VALUE -0000000a R_386_PC8 N2EFAS61 -00000015 R_386_PC32 N2EDEC10 - -RELOCATION RECORDS FOR [N2EFAS61]: -OFFSET TYPE VALUE -00000012 R_386_PC32 N2EDEC10 - -RELOCATION RECORDS FOR [LZMA_DEC00]: -OFFSET TYPE VALUE -00000005 R_386_32 lzma_stack_adjust -00000014 R_386_32 lzma_u_len -0000001e R_386_32 lzma_c_len -0000002a R_386_32 lzma_properties - -RELOCATION RECORDS FOR [CALLTR00]: -OFFSET TYPE VALUE -00000001 R_386_32 filter_length - -RELOCATION RECORDS FOR [CTCLEVE1]: -OFFSET TYPE VALUE -00000002 R_386_8 filter_cto -00000004 R_386_PC8 CALLTR00 - -RELOCATION RECORDS FOR [CALLTR02]: -OFFSET TYPE VALUE -0000000d R_386_PC8 CALLTR00 - -RELOCATION RECORDS FOR [CALLTR10]: -OFFSET TYPE VALUE -00000001 R_386_32 filter_length - -RELOCATION RECORDS FOR [CALLTR11]: -OFFSET TYPE VALUE -00000003 R_386_PC8 CALLTR13 - -RELOCATION RECORDS FOR [CTCLEVE2]: -OFFSET TYPE VALUE -00000002 R_386_8 filter_cto -00000004 R_386_PC8 CALLTR11 - -RELOCATION RECORDS FOR [CALLTR13]: -OFFSET TYPE VALUE -00000004 R_386_PC8 CALLTR10 - -RELOCATION RECORDS FOR [LXUNF000]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXUNF010 - -RELOCATION RECORDS FOR [LXMRU005]: -OFFSET TYPE VALUE -00000001 R_386_32 NMRU - -RELOCATION RECORDS FOR [LXUNF010]: -OFFSET TYPE VALUE -00000001 R_386_PC32 LXUNF042 - -RELOCATION RECORDS FOR [LXJCC020]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXUNF034 - -RELOCATION RECORDS FOR [LXJCC021]: -OFFSET TYPE VALUE -00000004 R_386_PC8 LXUNF034 - -RELOCATION RECORDS FOR [LXUNF388]: -OFFSET TYPE VALUE -00000002 R_386_PC8 LXUNF040 - -RELOCATION RECORDS FOR [LXUNF487]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXUNF040 - -RELOCATION RECORDS FOR [LXMRU065]: -OFFSET TYPE VALUE -00000004 R_386_PC8 LXMRU070 - -RELOCATION RECORDS FOR [LXMRU070]: -OFFSET TYPE VALUE -00000004 R_386_PC8 LXUNF040 - -RELOCATION RECORDS FOR [LXMRU090]: -OFFSET TYPE VALUE -00000006 R_386_PC8 LXMRU100 - -RELOCATION RECORDS FOR [LXUNF041]: -OFFSET TYPE VALUE -00000006 R_386_PC8 LXUNF034 - -RELOCATION RECORDS FOR [LEXEC016]: -OFFSET TYPE VALUE -00000001 R_386_PC32 LXUNF042 - -RELOCATION RECORDS FOR [LXMRU040]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXMRU030 - -RELOCATION RECORDS FOR [LXJCC000]: -OFFSET TYPE VALUE -00000007 R_386_PC8 LXJCC010 - -RELOCATION RECORDS FOR [LXCALL00]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXUNF037 - -RELOCATION RECORDS FOR [LXCJ2MRU]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXUNF037 - -RELOCATION RECORDS FOR [LXCJ4MRU]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXUNF034 - -RELOCATION RECORDS FOR [LXCJ6MRU]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXCJ8MRU - -RELOCATION RECORDS FOR [LXCJ7MRU]: -OFFSET TYPE VALUE -00000001 R_386_PC8 LXCJ8MRU - -RELOCATION RECORDS FOR [LXCJ8MRU]: -OFFSET TYPE VALUE -00000002 R_386_PC8 LXUNF037 - -RELOCATION RECORDS FOR [LXUNF034]: -OFFSET TYPE VALUE -00000004 R_386_PC8 LXUNF030 - -RELOCATION RECORDS FOR [ctok32.00]: -OFFSET TYPE VALUE -00000003 R_386_PC8 ctok32.20 - -RELOCATION RECORDS FOR [ctok32.10]: -OFFSET TYPE VALUE -0000000d R_386_PC8 ctok32.20 - -RELOCATION RECORDS FOR [ctok32.20]: -OFFSET TYPE VALUE -00000005 R_386_PC8 ctok32.40 -0000000a R_386_PC8 ctok32.40 -00000010 R_386_PC8 ctok32.40 - -RELOCATION RECORDS FOR [ctok32.30]: -OFFSET TYPE VALUE -00000004 R_386_PC8 ctok32.40 -00000009 R_386_PC8 ctok32.10 - -RELOCATION RECORDS FOR [ctok32.40]: -OFFSET TYPE VALUE -00000004 R_386_PC8 ctok32.00 - -RELOCATION RECORDS FOR [LEXEC020]: -OFFSET TYPE VALUE -00000070 R_386_32 O_BINFO +000001ba g ELFMAINX 0 mempcpy +00000160 g ELFMAINX 0 mmap +00000183 g ELFMAINX 0 uname +0000016e g ELFMAINX 0 get_upxfn_path +00000000 g ELFMAINX 0 _start +000001a8 g ELFMAINX 0 memset +000001da g ELFMAINX 0 my_bkpt +00000171 g ELFMAINX 0 stat +00000192 g ELFMAINX 0 mkdir + +RELOCATION RECORDS FOR [ELFMAINX]: +OFFSET TYPE VALUE +00000001 R_386_PC32 ELFMAINZ +00000093 R_386_PC32 upx_mmap_and_fd +00000138 R_386_PC32 mmap +000001f3 R_386_PC32 memset +000001fa R_386_PC32 stat +00000228 R_386_PC32 mkdir +00000317 R_386_PC32 mempcpy +0000041b R_386_PC32 uname +0000044a R_386_PC32 get_upxfn_path +000004d1 R_386_PC32 memset +0000052f R_386_PC32 mmap + +RELOCATION RECORDS FOR [ELFMAINZ]: +OFFSET TYPE VALUE +00000002 R_386_PC32 ELFMAINX +00000006 R_386_32 O_BINFO diff --git a/src/stub/tmp/i386-linux.elf-fold.map b/src/stub/tmp/i386-linux.elf-fold.map index 3362334f..442b8036 100644 --- a/src/stub/tmp/i386-linux.elf-fold.map +++ b/src/stub/tmp/i386-linux.elf-fold.map @@ -6,30 +6,83 @@ Name Origin Length Attributes Linker script and memory map + +.text 0x0000000000000000 0xca0 + .text 0x0000000000000000 0x183 tmp/i386-linux.elf-fold.o + 0x0000000000000004 get_page_mask + 0x0000000000000011 get_upxfn_path + *fill* 0x0000000000000183 0x1 00 + .text 0x0000000000000184 0x37f tmp/i386-linux.elf-upxfd_android.o + 0x000000000000038b upx_mmap_and_fd + *fill* 0x0000000000000503 0x1 00 + .text 0x0000000000000504 0x0 tmp/i386-expand.o + .text 0x0000000000000504 0x79c tmp/i386-linux.elf-main2.o + 0x0000000000000659 underlay + 0x0000000000000b4c upx_main + +.data 0x0000000000000000 0x0 + .data 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o + .data 0x0000000000000000 0x0 tmp/i386-linux.elf-upxfd_android.o + .data 0x0000000000000000 0x0 tmp/i386-expand.o + .data 0x0000000000000000 0x0 tmp/i386-linux.elf-main2.o + +.bss 0x0000000000000000 0x0 + .bss 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o + .bss 0x0000000000000000 0x0 tmp/i386-linux.elf-upxfd_android.o + .bss 0x0000000000000000 0x0 tmp/i386-expand.o + .bss 0x0000000000000000 0x0 tmp/i386-linux.elf-main2.o TARGET(elf32-i386) - 0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc) - -.text 0x0000000000c01080 0x7b8 - *(.text) - .text 0x0000000000c01080 0x1bc tmp/i386-linux.elf-fold.o - 0x0000000000c0120e mmap - 0x0000000000c011e6 Pprotect - .text 0x0000000000c0123c 0x5fa tmp/i386-linux.elf-main.o - 0x0000000000c01397 get_page_mask - 0x0000000000c0172c upx_main - *(.data) - *fill* 0x0000000000c01836 0x2 00 - .data 0x0000000000c01838 0x0 tmp/i386-linux.elf-fold.o - .data 0x0000000000c01838 0x0 tmp/i386-linux.elf-main.o - -.data - -.bss 0x0000000000c01838 0x0 - .bss 0x0000000000c01838 0x0 tmp/i386-linux.elf-fold.o - .bss 0x0000000000c01838 0x0 tmp/i386-linux.elf-main.o - -.rel.dyn 0x0000000000c01838 0x0 - .rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o + 0x0000000000100040 . = ((0x100000 + SIZEOF_HEADERS) + 0xc) LOAD tmp/i386-linux.elf-fold.o -LOAD tmp/i386-linux.elf-main.o +LOAD tmp/i386-linux.elf-upxfd_android.o +LOAD tmp/i386-expand.o +LOAD tmp/i386-linux.elf-main2.o OUTPUT(tmp/i386-linux.elf-fold.bin elf32-i386) + +SYSCALLS 0x0000000000000000 0xc0 + SYSCALLS 0x0000000000000000 0xc0 tmp/i386-linux.elf-fold.o + 0x000000000000008f memcpy + 0x00000000000000a5 mempcpy + 0x000000000000002a mmap + 0x000000000000005a uname + 0x000000000000007b memset + 0x00000000000000bb my_bkpt + 0x0000000000000000 Pprotect + 0x0000000000000048 stat + 0x0000000000000069 mkdir + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 tmp/i386-linux.elf-upxfd_android.o + +EXP_HEAD 0x0000000000000000 0xf1 + EXP_HEAD 0x0000000000000000 0xf1 tmp/i386-expand.o + 0x0000000000000057 f_expand + +EXP_TAIL 0x0000000000000000 0xb + EXP_TAIL 0x0000000000000000 0xb tmp/i386-expand.o + +NRV2E 0x0000000000000000 0xd2 + NRV2E 0x0000000000000000 0xd2 tmp/i386-expand.o + +NRV2D 0x0000000000000000 0xc5 + NRV2D 0x0000000000000000 0xc5 tmp/i386-expand.o + +NRV2B 0x0000000000000000 0xb0 + NRV2B 0x0000000000000000 0xb0 tmp/i386-expand.o + +LZMA_DEC00 0x0000000000000000 0x2e + LZMA_DEC00 0x0000000000000000 0x2e tmp/i386-expand.o + +LZMA_ELF00 0x0000000000000000 0x48 + LZMA_ELF00 0x0000000000000000 0x48 tmp/i386-expand.o + +LZMA_DEC10 0x0000000000000000 0xa86 + LZMA_DEC10 0x0000000000000000 0xa86 tmp/i386-expand.o + +LZMA_DEC20 0x0000000000000000 0xa86 + LZMA_DEC20 0x0000000000000000 0xa86 tmp/i386-expand.o + +LZMA_DEC30 0x0000000000000000 0x1a + LZMA_DEC30 0x0000000000000000 0x1a tmp/i386-expand.o diff --git a/src/stub/tmp/i386-linux.elf.execve-fold.map b/src/stub/tmp/i386-linux.elf.execve-fold.map index d57870c3..8a30123c 100644 --- a/src/stub/tmp/i386-linux.elf.execve-fold.map +++ b/src/stub/tmp/i386-linux.elf.execve-fold.map @@ -9,28 +9,29 @@ Linker script and memory map TARGET(elf32-i386) 0x0000000000401080 . = ((0x401000 + SIZEOF_HEADERS) + 0xc) -.data 0x0000000000401080 0x3c8 +.data 0x0000000000401080 0x3f0 *(.text) .text 0x0000000000401080 0x28 tmp/i386-linux.elf.execve-fold.o 0x000000000040109c mmap - .text 0x00000000004010a8 0x37c tmp/i386-linux.elf.execve-main.o - 0x00000000004011c0 my_bkpt - 0x00000000004011c2 upx_main - .text 0x0000000000401424 0x23 tmp/i386-linux.elf.execve-upx_itoa.o - 0x0000000000401424 upx_itoa + .text 0x00000000004010a8 0x3a3 tmp/i386-linux.elf.execve-main.o + 0x00000000004011c4 my_bkpt + 0x00000000004011c6 upx_main + *fill* 0x000000000040144b 0x1 00 + .text 0x000000000040144c 0x23 tmp/i386-linux.elf.execve-upx_itoa.o + 0x000000000040144c upx_itoa *(.rodata) *(.data) - *fill* 0x0000000000401447 0x1 00 - .data 0x0000000000401448 0x0 tmp/i386-linux.elf.execve-fold.o - .data 0x0000000000401448 0x0 tmp/i386-linux.elf.execve-main.o - .data 0x0000000000401448 0x0 tmp/i386-linux.elf.execve-upx_itoa.o + *fill* 0x000000000040146f 0x1 00 + .data 0x0000000000401470 0x0 tmp/i386-linux.elf.execve-fold.o + .data 0x0000000000401470 0x0 tmp/i386-linux.elf.execve-main.o + .data 0x0000000000401470 0x0 tmp/i386-linux.elf.execve-upx_itoa.o *(.bss) - .bss 0x0000000000401448 0x0 tmp/i386-linux.elf.execve-fold.o - .bss 0x0000000000401448 0x0 tmp/i386-linux.elf.execve-main.o - .bss 0x0000000000401448 0x0 tmp/i386-linux.elf.execve-upx_itoa.o + .bss 0x0000000000401470 0x0 tmp/i386-linux.elf.execve-fold.o + .bss 0x0000000000401470 0x0 tmp/i386-linux.elf.execve-main.o + .bss 0x0000000000401470 0x0 tmp/i386-linux.elf.execve-upx_itoa.o *(COMMON) -.rel.dyn 0x0000000000401448 0x0 +.rel.dyn 0x0000000000401470 0x0 .rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf.execve-fold.o LOAD tmp/i386-linux.elf.execve-fold.o LOAD tmp/i386-linux.elf.execve-main.o diff --git a/src/stub/tmp/i386-linux.elf.interp-fold.map b/src/stub/tmp/i386-linux.elf.interp-fold.map index 6e99f65b..0b20bce1 100644 --- a/src/stub/tmp/i386-linux.elf.interp-fold.map +++ b/src/stub/tmp/i386-linux.elf.interp-fold.map @@ -9,25 +9,25 @@ Linker script and memory map TARGET(elf32-i386) 0x0000000000010074 . = (0x10000 + SIZEOF_HEADERS) -.text 0x0000000000010074 0x584 +.text 0x0000000000010074 0x630 *(.text) .text 0x0000000000010074 0x74 tmp/i386-linux.elf.interp-fold.o 0x00000000000100da mmap - .text 0x00000000000100e8 0x50d tmp/i386-linux.elf.interp-main.o - 0x00000000000104fa pti_main + .text 0x00000000000100e8 0x5bb tmp/i386-linux.elf.interp-main.o + 0x000000000001059f pti_main *(.rodata) *(.data) - *fill* 0x00000000000105f5 0x3 00 - .data 0x00000000000105f8 0x0 tmp/i386-linux.elf.interp-fold.o - .data 0x00000000000105f8 0x0 tmp/i386-linux.elf.interp-main.o + *fill* 0x00000000000106a3 0x1 00 + .data 0x00000000000106a4 0x0 tmp/i386-linux.elf.interp-fold.o + .data 0x00000000000106a4 0x0 tmp/i386-linux.elf.interp-main.o .data -.bss 0x00000000000105f8 0x0 - .bss 0x00000000000105f8 0x0 tmp/i386-linux.elf.interp-fold.o - .bss 0x00000000000105f8 0x0 tmp/i386-linux.elf.interp-main.o +.bss 0x00000000000106a4 0x0 + .bss 0x00000000000106a4 0x0 tmp/i386-linux.elf.interp-fold.o + .bss 0x00000000000106a4 0x0 tmp/i386-linux.elf.interp-main.o -.rel.dyn 0x00000000000105f8 0x0 +.rel.dyn 0x00000000000106a4 0x0 .rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf.interp-fold.o LOAD tmp/i386-linux.elf.interp-fold.o LOAD tmp/i386-linux.elf.interp-main.o diff --git a/src/stub/tmp/i386-linux.elf.shell-fold.map b/src/stub/tmp/i386-linux.elf.shell-fold.map index 65df656b..40410f44 100644 --- a/src/stub/tmp/i386-linux.elf.shell-fold.map +++ b/src/stub/tmp/i386-linux.elf.shell-fold.map @@ -10,22 +10,22 @@ TARGET(elf32-i386) 0x0000000001400074 . = (0x1400000 + SIZEOF_HEADERS) 0x0000000001400080 . = ALIGN (0x80) -.data 0x0000000001400080 0x4ac +.data 0x0000000001400080 0x4f0 *(.text) .text 0x0000000001400080 0xf4 tmp/i386-linux.elf.shell-fold.o 0x0000000001400167 mmap - .text 0x0000000001400174 0x3b8 tmp/i386-linux.elf.shell-main.o - 0x00000000014003bc upx_main + .text 0x0000000001400174 0x3fc tmp/i386-linux.elf.shell-main.o + 0x00000000014003ec upx_main *(.rodata) *(.data) - .data 0x000000000140052c 0x0 tmp/i386-linux.elf.shell-fold.o - .data 0x000000000140052c 0x0 tmp/i386-linux.elf.shell-main.o + .data 0x0000000001400570 0x0 tmp/i386-linux.elf.shell-fold.o + .data 0x0000000001400570 0x0 tmp/i386-linux.elf.shell-main.o *(.bss) - .bss 0x000000000140052c 0x0 tmp/i386-linux.elf.shell-fold.o - .bss 0x000000000140052c 0x0 tmp/i386-linux.elf.shell-main.o + .bss 0x0000000001400570 0x0 tmp/i386-linux.elf.shell-fold.o + .bss 0x0000000001400570 0x0 tmp/i386-linux.elf.shell-main.o *(COMMON) -.rel.dyn 0x000000000140052c 0x0 +.rel.dyn 0x0000000001400570 0x0 .rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf.shell-fold.o LOAD tmp/i386-linux.elf.shell-fold.o LOAD tmp/i386-linux.elf.shell-main.o diff --git a/src/stub/tmp/i386-netbsd.elf-fold.map b/src/stub/tmp/i386-netbsd.elf-fold.map index eba7463e..c3ff2ff3 100644 --- a/src/stub/tmp/i386-netbsd.elf-fold.map +++ b/src/stub/tmp/i386-netbsd.elf-fold.map @@ -9,45 +9,46 @@ Linker script and memory map TARGET(elf32-i386) 0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc) -.text 0x0000000000c01080 0x698 +.text 0x0000000000c01080 0x768 *(.text) .text 0x0000000000c01080 0xc4 tmp/i386-bsd.elf-fold.o - .text 0x0000000000c01144 0x564 tmp/i386-bsd.elf-main.o - 0x0000000000c01570 upx_main - .text 0x0000000000c016a8 0x6d tmp/i386-bsd.syscall.o - 0x0000000000c01711 waitpid - 0x0000000000c016e5 munmap - 0x0000000000c016f9 execve - 0x0000000000c016f1 getpid - 0x0000000000c01701 ftruncate - 0x0000000000c016a8 mmap - 0x0000000000c01709 nanosleep - 0x0000000000c016d9 write - 0x0000000000c016d5 read - 0x0000000000c0170d unlink - 0x0000000000c016fd fork - 0x0000000000c01705 gettimeofday - 0x0000000000c016ed access - 0x0000000000c016cd exit - 0x0000000000c016cc brk - 0x0000000000c016dd open - 0x0000000000c016e9 mprotect - 0x0000000000c016f5 fcntl - 0x0000000000c016e1 close + .text 0x0000000000c01144 0x632 tmp/i386-bsd.elf-main.o + 0x0000000000c0162f upx_main + *fill* 0x0000000000c01776 0x2 00 + .text 0x0000000000c01778 0x6d tmp/i386-bsd.syscall.o + 0x0000000000c017e1 waitpid + 0x0000000000c017b5 munmap + 0x0000000000c017c9 execve + 0x0000000000c017c1 getpid + 0x0000000000c017d1 ftruncate + 0x0000000000c01778 mmap + 0x0000000000c017d9 nanosleep + 0x0000000000c017a9 write + 0x0000000000c017a5 read + 0x0000000000c017dd unlink + 0x0000000000c017cd fork + 0x0000000000c017d5 gettimeofday + 0x0000000000c017bd access + 0x0000000000c0179d exit + 0x0000000000c0179c brk + 0x0000000000c017ad open + 0x0000000000c017b9 mprotect + 0x0000000000c017c5 fcntl + 0x0000000000c017b1 close *(.data) - *fill* 0x0000000000c01715 0x3 00 - .data 0x0000000000c01718 0x0 tmp/i386-bsd.elf-fold.o - .data 0x0000000000c01718 0x0 tmp/i386-bsd.elf-main.o - .data 0x0000000000c01718 0x0 tmp/i386-bsd.syscall.o + *fill* 0x0000000000c017e5 0x3 00 + .data 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-fold.o + .data 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-main.o + .data 0x0000000000c017e8 0x0 tmp/i386-bsd.syscall.o .data -.bss 0x0000000000c01718 0x0 - .bss 0x0000000000c01718 0x0 tmp/i386-bsd.elf-fold.o - .bss 0x0000000000c01718 0x0 tmp/i386-bsd.elf-main.o - .bss 0x0000000000c01718 0x0 tmp/i386-bsd.syscall.o +.bss 0x0000000000c017e8 0x0 + .bss 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-fold.o + .bss 0x0000000000c017e8 0x0 tmp/i386-bsd.elf-main.o + .bss 0x0000000000c017e8 0x0 tmp/i386-bsd.syscall.o -.rel.dyn 0x0000000000c01718 0x0 +.rel.dyn 0x0000000000c017e8 0x0 .rel.text 0x0000000000000000 0x0 tmp/i386-bsd.elf-fold.o LOAD tmp/i386-bsd.elf-fold.o LOAD tmp/i386-bsd.elf-main.o diff --git a/src/stub/tmp/i386-openbsd.elf-fold.map b/src/stub/tmp/i386-openbsd.elf-fold.map index 4d02b6f6..fba2cdcd 100644 --- a/src/stub/tmp/i386-openbsd.elf-fold.map +++ b/src/stub/tmp/i386-openbsd.elf-fold.map @@ -9,45 +9,46 @@ Linker script and memory map TARGET(elf32-i386) 0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc) -.text 0x0000000000c01080 0x77c +.text 0x0000000000c01080 0x854 *(.text) .text 0x0000000000c01080 0xc4 tmp/i386-openbsd.elf-fold.o - .text 0x0000000000c01144 0x648 tmp/i386-openbsd.elf-main.o - 0x0000000000c0163e upx_main - .text 0x0000000000c0178c 0x6d tmp/i386-bsd.syscall.o - 0x0000000000c017f5 waitpid - 0x0000000000c017c9 munmap - 0x0000000000c017dd execve - 0x0000000000c017d5 getpid - 0x0000000000c017e5 ftruncate - 0x0000000000c0178c mmap - 0x0000000000c017ed nanosleep - 0x0000000000c017bd write - 0x0000000000c017b9 read - 0x0000000000c017f1 unlink - 0x0000000000c017e1 fork - 0x0000000000c017e9 gettimeofday - 0x0000000000c017d1 access - 0x0000000000c017b1 exit - 0x0000000000c017b0 brk - 0x0000000000c017c1 open - 0x0000000000c017cd mprotect - 0x0000000000c017d9 fcntl - 0x0000000000c017c5 close + .text 0x0000000000c01144 0x71d tmp/i386-openbsd.elf-main.o + 0x0000000000c01704 upx_main + *fill* 0x0000000000c01861 0x3 00 + .text 0x0000000000c01864 0x6d tmp/i386-bsd.syscall.o + 0x0000000000c018cd waitpid + 0x0000000000c018a1 munmap + 0x0000000000c018b5 execve + 0x0000000000c018ad getpid + 0x0000000000c018bd ftruncate + 0x0000000000c01864 mmap + 0x0000000000c018c5 nanosleep + 0x0000000000c01895 write + 0x0000000000c01891 read + 0x0000000000c018c9 unlink + 0x0000000000c018b9 fork + 0x0000000000c018c1 gettimeofday + 0x0000000000c018a9 access + 0x0000000000c01889 exit + 0x0000000000c01888 brk + 0x0000000000c01899 open + 0x0000000000c018a5 mprotect + 0x0000000000c018b1 fcntl + 0x0000000000c0189d close *(.data) - *fill* 0x0000000000c017f9 0x3 00 - .data 0x0000000000c017fc 0x0 tmp/i386-openbsd.elf-fold.o - .data 0x0000000000c017fc 0x0 tmp/i386-openbsd.elf-main.o - .data 0x0000000000c017fc 0x0 tmp/i386-bsd.syscall.o + *fill* 0x0000000000c018d1 0x3 00 + .data 0x0000000000c018d4 0x0 tmp/i386-openbsd.elf-fold.o + .data 0x0000000000c018d4 0x0 tmp/i386-openbsd.elf-main.o + .data 0x0000000000c018d4 0x0 tmp/i386-bsd.syscall.o .data -.bss 0x0000000000c017fc 0x0 - .bss 0x0000000000c017fc 0x0 tmp/i386-openbsd.elf-fold.o - .bss 0x0000000000c017fc 0x0 tmp/i386-openbsd.elf-main.o - .bss 0x0000000000c017fc 0x0 tmp/i386-bsd.syscall.o +.bss 0x0000000000c018d4 0x0 + .bss 0x0000000000c018d4 0x0 tmp/i386-openbsd.elf-fold.o + .bss 0x0000000000c018d4 0x0 tmp/i386-openbsd.elf-main.o + .bss 0x0000000000c018d4 0x0 tmp/i386-bsd.syscall.o -.rel.dyn 0x0000000000c017fc 0x0 +.rel.dyn 0x0000000000c018d4 0x0 .rel.text 0x0000000000000000 0x0 tmp/i386-openbsd.elf-fold.o LOAD tmp/i386-openbsd.elf-fold.o LOAD tmp/i386-openbsd.elf-main.o