workaround added for a msvc runtime "protection"

committer: ml1050 <ml1050> 1139393823 +0000
This commit is contained in:
László Molnár
2006-02-08 10:17:03 +00:00
parent fbb60f5191
commit e322613d84
4 changed files with 249 additions and 206 deletions
+25 -8
View File
@@ -2,8 +2,8 @@
This file is part of the UPX executable compressor.
Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2004 Laszlo Molnar
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2006 Laszlo Molnar
All Rights Reserved.
UPX and the UCL library are free software; you can redistribute them
@@ -160,6 +160,7 @@ PackW32Pe::PackW32Pe(InputFile *f) : super(f)
tlsindex = 0;
big_relocs = 0;
soloadconf = 0;
use_dep_hack = false;
}
@@ -547,7 +548,9 @@ void PackW32Pe::processImports(unsigned myimport) // pass 2
unsigned PackW32Pe::processImports() // pass 1
{
static const unsigned char kernel32dll[] = "KERNEL32.DLL";
static const char llgpa[] = "\x0\x0""LoadLibraryA\x0\x0""GetProcAddress\x0\x0";
static const char llgpa[] = "\x0\x0""LoadLibraryA\x0\x0"
"GetProcAddress\x0\x0"
"VirtualProtect\x0\x0";
static const char exitp[] = "ExitProcess\x0\x0\x0";
unsigned dllnum = 0;
@@ -651,7 +654,7 @@ unsigned PackW32Pe::processImports() // pass 1
im = (import_desc*) oimpdlls;
LE32 *ordinals = (LE32*) (oimpdlls + (dllnum2 + 1) * sizeof(import_desc));
LE32 *lookuptable = ordinals + 3 + k32o + (isdll ? 0 : 1);
LE32 *lookuptable = ordinals + 4 + k32o + (isdll ? 0 : 1);
upx_byte *dllnames = ((upx_byte*) lookuptable) + (dllnum2 - 1) * 8;
upx_byte *importednames = dllnames + (dllnamelen &~ 1);
@@ -663,10 +666,11 @@ unsigned PackW32Pe::processImports() // pass 1
strcpy(dllnames,kernel32dll);
im->dllname = k32namepos;
im->iat = ptr_diff(ordinals,oimpdlls);
*ordinals++ = ptr_diff(importednames,oimpdlls);
*ordinals++ = ptr_diff(importednames,oimpdlls) + 14;
*ordinals++ = ptr_diff(importednames,oimpdlls); // LoadLibraryA
*ordinals++ = ptr_diff(importednames,oimpdlls) + 14; // GetProcAddress
*ordinals++ = ptr_diff(importednames,oimpdlls) + 14 + 16; // VirtualProtect
if (!isdll)
*ordinals++ = ptr_diff(importednames,oimpdlls) + sizeof(llgpa) - 3;
*ordinals++ = ptr_diff(importednames,oimpdlls) + sizeof(llgpa) - 3; // ExitProcess
dllnames += sizeof(kernel32dll);
importednames += sizeof(llgpa) - 2 + (isdll ? 0 : sizeof(exitp) - 1);
@@ -1640,6 +1644,8 @@ int PackW32Pe::buildLoader(const Filter *ft)
NULL
);
}
if (use_dep_hack)
addLoader("PEDEPHAK", NULL);
addLoader("PEMAIN20",
ih.entry ? "PEDOJUMP" : "PERETURN",
"IDENTSTR,UPX1HEAD",
@@ -1903,6 +1909,17 @@ void PackW32Pe::pack(OutputFile *fo)
unsigned jmp_pos = find_le32(loader,codesize + 4,get_le32("JMPO"));
patch_le32(loader,codesize + 4,"JMPO",ih.entry - upxsection - jmp_pos - 4);
}
if (use_dep_hack)
{
// this works around a lame "protection" introduced in MSVCRT80
// rva of the most significant byte of member "flags" in section "UPX0"
const unsigned swri = pe_offset + sizeof(oh) + sizeof(pe_section_t) - 1;
if (swri >= 0x1000)
throwCantPack("swri >= 0x1000! Send a bug report please!");
patch_le32(loader, codesize, "SWRI", swri);
patch_le32(loader, codesize, "IMGB", 0u - rvamin);
patch_le32(loader, codesize, "VPRO", myimport + get_le32(oimpdlls + 16) + 8);
}
if (big_relocs & 6)
patch_le32(loader,codesize,"DELT", 0u - (unsigned) ih.imagebase - rvamin);
if (sorelocs && (soimport == 0 || soimport + cimports != crelocs))
@@ -1910,7 +1927,7 @@ void PackW32Pe::pack(OutputFile *fo)
if (soimport)
{
if (!isdll)
patch_le32(loader,codesize,"EXIT",myimport + get_le32(oimpdlls + 16) + 8);
patch_le32(loader,codesize,"EXIT",myimport + get_le32(oimpdlls + 16) + 12);
patch_le32(loader,codesize,"GETP",myimport + get_le32(oimpdlls + 16) + 4);
if (kernel32ordinal)
patch_le32(loader,codesize,"K32O",myimport);
+2
View File
@@ -124,6 +124,8 @@ protected:
upx_byte *oloadconf;
unsigned soloadconf;
bool use_dep_hack;
struct pe_header_t
{
// 0x0
+20 -2
View File
@@ -2,8 +2,8 @@
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer
; Copyright (C) 1996-2004 Laszlo Molnar
; Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
; Copyright (C) 1996-2006 Laszlo Molnar
; All Rights Reserved.
;
; UPX and the UCL library are free software; you can redistribute them
@@ -200,6 +200,24 @@ relhi0:
%endif; __PERELHIZ__
; =============
%ifdef __PEDEPHAK__
mov ebp, [esi + 'VPRO'] ; VirtualProtect
mov ebx, 0x1000
lea edi, [esi + 'IMGB']
push byte 0
push byte 4
push ebx
push edi
call ebp
and byte [edi + 'SWRI'], 0x7f
push byte 0
push byte 2
push ebx
push edi
call ebp
%endif; __PEDEPHAX__
; __PEMAIN20__
popad
+202 -196
View File
@@ -1,9 +1,10 @@
/* l_w32pe.h -- created from l_w32pe.bin, 4156 (0x103c) bytes
/* l_w32pe.h -- created from l_w32pe.bin, 4222 (0x107e) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2005 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2005 Laszlo Molnar
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2006 Laszlo Molnar
Copyright (C) 2000-2006 John F. Reiser
All Rights Reserved.
UPX and the UCL library are free software; you can redistribute them
@@ -26,10 +27,11 @@
*/
#define NRV_LOADER_ADLER32 0x8204d47e
#define NRV_LOADER_CRC32 0x94627963
#define NRV_LOADER_SIZE 4222
#define NRV_LOADER_ADLER32 0x8359ea65
#define NRV_LOADER_CRC32 0xccefc302
unsigned char nrv_loader[4156] = {
unsigned char nrv_loader[4222] = {
128,124, 36, 8, 1, 15,133, 0, 0, 0, 0, 96,190, 69, 83, 73, /* 0x 0 */
48,141,190, 69, 68, 73, 48,102,255,135, 73, 67, 79, 78,102,129, /* 0x 10 */
135, 73, 67, 79, 78, 68, 82,199,135, 84, 76, 83, 65, 84, 76, 83, /* 0x 20 */
@@ -100,194 +102,198 @@ unsigned char nrv_loader[4156] = {
224, 16,102,139, 7,131,199, 2, 9,192,117, 0,139, 7,131,199, /* 0x 430 */
4,235, 0,135,254,141,143, 68, 69, 76, 84,169,102, 1, 12, 7, /* 0x 440 */
173, 9,192,117,247,193,233, 16,169,102, 1, 12, 7,173, 9,192, /* 0x 450 */
117,247, 97, 49,192, 64,194, 12, 0,233, 74, 77, 80, 79, 85, 80, /* 0x 460 */
88, 33,161,216,208,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 470 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, /* 0x 480 */
80, 69, 73, 83, 68, 76, 76, 49, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 490 */
0, 11, 0, 0, 0, 80, 69, 77, 65, 73, 78, 50, 48, 0, 1, 0, /* 0x 4a0 */
0, 0, 80, 69, 77, 65, 73, 78, 48, 49, 0, 11, 0, 0, 0, 80, /* 0x 4b0 */
69, 73, 67, 79, 78, 83, 49, 0, 23, 0, 0, 0, 80, 69, 73, 67, /* 0x 4c0 */
79, 78, 83, 50, 0, 30, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, /* 0x 4d0 */
90, 0, 39, 0, 0, 0, 80, 69, 84, 76, 83, 72, 65, 75, 0, 39, /* 0x 4e0 */
0, 0, 0, 80, 69, 77, 65, 73, 78, 48, 50, 0, 49, 0, 0, 0, /* 0x 4f0 */
78, 50, 66, 83, 77, 65, 49, 48, 0, 53, 0, 0, 0, 0, 0, 0, /* 0x 500 */
0, 55, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, /* 0x 510 */
0, 0, 78, 50, 66, 70, 65, 83, 49, 48, 0, 56, 0, 0, 0, 0, /* 0x 520 */
0, 0, 0, 58, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, /* 0x 530 */
4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, 0, 58, 0, 0, /* 0x 540 */
0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 64, 0, 0, 0, 78, 50, /* 0x 550 */
66, 83, 77, 65, 50, 48, 0, 75, 0, 0, 0, 0, 0, 0, 0, 77, /* 0x 560 */
0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, /* 0x 570 */
78, 50, 66, 70, 65, 83, 50, 48, 0, 80, 0, 0, 0, 0, 0, 0, /* 0x 580 */
0, 82, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, 0, 0, 0, /* 0x 590 */
0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 87, 0, 0, 0, 78, /* 0x 5a0 */
50, 66, 83, 77, 65, 51, 48, 0,100, 0, 0, 0, 0, 0, 0, 0, /* 0x 5b0 */
113, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, /* 0x 5c0 */
0, 78, 50, 66, 70, 65, 83, 51, 48, 0,113, 0, 0, 0, 0, 0, /* 0x 5d0 */
0, 0,117, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, /* 0x 5e0 */
0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 5f0 */
67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, /* 0x 600 */
0,128, 0, 0, 0, 0, 0, 0, 0,146, 0, 0, 0, 78, 50, 66, /* 0x 610 */
68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0, /* 0x 620 */
0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, /* 0x 630 */
50, 66, 83, 77, 65, 52, 48, 0,190, 0, 0, 0, 0, 0, 0, 0, /* 0x 640 */
203, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, /* 0x 650 */
0, 78, 50, 66, 70, 65, 83, 52, 48, 0,203, 0, 0, 0, 0, 0, /* 0x 660 */
0, 0,207, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, /* 0x 670 */
0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 680 */
67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 68, 85, 77, 77, 49, /* 0x 690 */
0,218, 0, 0, 0, 78, 50, 66, 83, 77, 65, 53, 48, 0,218, 0, /* 0x 6a0 */
0, 0, 78, 50, 66, 70, 65, 83, 53, 48, 0,220, 0, 0, 0, 78, /* 0x 6b0 */
50, 66, 68, 69, 67, 53, 48, 0,223, 0, 0, 0, 78, 50, 66, 83, /* 0x 6c0 */
77, 65, 54, 48, 0,232, 0, 0, 0, 0, 0, 0, 0,246, 0, 0, /* 0x 6d0 */
0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x 6e0 */
66, 70, 65, 83, 54, 48, 0,246, 0, 0, 0, 0, 0, 0, 0,254, /* 0x 6f0 */
0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, /* 0x 700 */
0, 0, 0, 0, 12, 1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x 710 */
0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0, 12, 1, /* 0x 720 */
0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 730 */
49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, /* 0x 740 */
34, 1, 0, 0, 78, 82, 86, 50, 66, 69, 78, 68, 0, 34, 1, 0, /* 0x 750 */
0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 34, 1, 0, 0, 0, 0, /* 0x 760 */
0, 0, 36, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, /* 0x 770 */
0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 48, 0, 37, 1, 0, 0, /* 0x 780 */
0, 0, 0, 0, 39, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x 790 */
0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 39, 1, /* 0x 7a0 */
0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 45, 1, 0, 0, 78, /* 0x 7b0 */
50, 68, 83, 77, 65, 50, 48, 0, 56, 1, 0, 0, 0, 0, 0, 0, /* 0x 7c0 */
58, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 2, 0, 0, /* 0x 7d0 */
0, 78, 50, 68, 70, 65, 83, 50, 48, 0, 61, 1, 0, 0, 0, 0, /* 0x 7e0 */
0, 0, 63, 1, 0, 0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 0, /* 0x 7f0 */
0, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 68, 1, 0, 0, /* 0x 800 */
78, 50, 68, 83, 77, 65, 51, 48, 0, 81, 1, 0, 0, 0, 0, 0, /* 0x 810 */
0, 94, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, /* 0x 820 */
0, 0, 78, 50, 68, 70, 65, 83, 51, 48, 0, 94, 1, 0, 0, 0, /* 0x 830 */
0, 0, 0,100, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 840 */
16, 0, 0, 0, 0, 0, 0, 0,109, 1, 0, 0, 78, 50, 68, 68, /* 0x 850 */
69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 860 */
48, 0,109, 1, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 78, 50, /* 0x 870 */
68, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, /* 0x 880 */
1, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, /* 0x 890 */
0, 0, 0, 0,177, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, /* 0x 8a0 */
0, 0, 0, 0, 0, 78, 50, 68, 83, 77, 65, 52, 48, 0,191, 1, /* 0x 8b0 */
0, 0, 0, 0, 0, 0,204, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 8c0 */
51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 70, 65, 83, 52, 48, 0, /* 0x 8d0 */
204, 1, 0, 0, 0, 0, 0, 0,208, 1, 0, 0, 78, 50, 68, 68, /* 0x 8e0 */
69, 67, 51, 48, 0, 69, 0, 0, 0, 0, 0, 0, 0,219, 1, 0, /* 0x 8f0 */
0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, /* 0x 900 */
68, 68, 85, 77, 77, 49, 0,219, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 910 */
65, 53, 48, 0,219, 1, 0, 0, 78, 50, 68, 70, 65, 83, 53, 48, /* 0x 920 */
0,221, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, 0,224, 1, /* 0x 930 */
0, 0, 78, 50, 68, 83, 77, 65, 54, 48, 0,233, 1, 0, 0, 0, /* 0x 940 */
0, 0, 0,247, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, /* 0x 950 */
0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 48, 0,247, 1, 0, /* 0x 960 */
0, 0, 0, 0, 0,255, 1, 0, 0, 78, 50, 68, 70, 65, 83, 54, /* 0x 970 */
49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 78, 50, /* 0x 980 */
68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 990 */
83, 54, 49, 0, 13, 2, 0, 0, 0, 0, 0, 0, 35, 2, 0, 0, /* 0x 9a0 */
78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x 9b0 */
68, 69, 67, 54, 48, 0, 35, 2, 0, 0, 78, 82, 86, 50, 68, 69, /* 0x 9c0 */
78, 68, 0, 35, 2, 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, /* 0x 9d0 */
35, 2, 0, 0, 0, 0, 0, 0, 37, 2, 0, 0, 78, 50, 69, 68, /* 0x 9e0 */
69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, /* 0x 9f0 */
48, 0, 38, 2, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, 78, 50, /* 0x a00 */
69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, /* 0x a10 */
83, 49, 49, 0, 40, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x a20 */
0, 46, 2, 0, 0, 78, 50, 69, 83, 77, 65, 50, 48, 0, 57, 2, /* 0x a30 */
0, 0, 0, 0, 0, 0, 59, 2, 0, 0, 78, 50, 69, 83, 77, 65, /* 0x a40 */
49, 48, 0, 2, 0, 0, 0, 78, 50, 69, 70, 65, 83, 50, 48, 0, /* 0x a50 */
62, 2, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 78, 50, 69, 70, /* 0x a60 */
65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 50, /* 0x a70 */
48, 0, 69, 2, 0, 0, 78, 50, 69, 83, 77, 65, 51, 48, 0, 82, /* 0x a80 */
2, 0, 0, 0, 0, 0, 0, 95, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x a90 */
67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 70, 65, 83, 51, 48, /* 0x aa0 */
0, 95, 2, 0, 0, 0, 0, 0, 0,101, 2, 0, 0, 78, 50, 69, /* 0x ab0 */
68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 0, 0, 0, 0,110, 2, /* 0x ac0 */
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, /* 0x ad0 */
50, 69, 68, 69, 67, 51, 48, 0,110, 2, 0, 0, 0, 0, 0, 0, /* 0x ae0 */
126, 2, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 0, 0, 0, /* 0x af0 */
0, 0, 0, 0, 0,141, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, /* 0x b00 */
48, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 2, 0, 0, 78, 50, /* 0x b10 */
69, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 78, 50, 69, 83, 77, /* 0x b20 */
65, 52, 48, 0,205, 2, 0, 0, 0, 0, 0, 0,218, 2, 0, 0, /* 0x b30 */
78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, /* 0x b40 */
70, 65, 83, 52, 48, 0,218, 2, 0, 0, 0, 0, 0, 0,222, 2, /* 0x b50 */
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 0, /* 0x b60 */
0, 0, 0,233, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x b70 */
82, 0, 0, 0, 78, 50, 69, 68, 85, 77, 77, 49, 0,233, 2, 0, /* 0x b80 */
0, 78, 50, 69, 83, 77, 65, 53, 48, 0,233, 2, 0, 0, 78, 50, /* 0x b90 */
69, 70, 65, 83, 53, 48, 0,235, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x ba0 */
67, 53, 48, 0,238, 2, 0, 0, 78, 50, 69, 83, 77, 65, 54, 48, /* 0x bb0 */
0,247, 2, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0, 78, 50, 69, /* 0x bc0 */
68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, /* 0x bd0 */
54, 48, 0, 5, 3, 0, 0, 0, 0, 0, 0, 13, 3, 0, 0, 78, /* 0x be0 */
50, 69, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */
27, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, /* 0x c00 */
0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 27, 3, 0, 0, 0, 0, /* 0x c10 */
0, 0, 49, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, /* 0x c20 */
0, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 49, 3, 0, 0, /* 0x c30 */
78, 82, 86, 50, 69, 69, 78, 68, 0, 49, 3, 0, 0, 80, 69, 77, /* 0x c40 */
85, 76, 84, 73, 80, 0, 49, 3, 0, 0, 0, 0, 0, 0, 58, 3, /* 0x c50 */
0, 0, 80, 69, 77, 65, 73, 78, 48, 50, 0, 1, 0, 0, 0, 80, /* 0x c60 */
69, 77, 65, 73, 78, 49, 48, 0, 58, 3, 0, 0, 80, 69, 67, 65, /* 0x c70 */
76, 76, 84, 82, 0, 59, 3, 0, 0, 80, 69, 67, 84, 84, 80, 79, /* 0x c80 */
83, 0, 59, 3, 0, 0, 80, 69, 67, 84, 84, 78, 85, 76, 0, 65, /* 0x c90 */
3, 0, 0, 80, 69, 68, 85, 77, 77, 89, 48, 0, 67, 3, 0, 0, /* 0x ca0 */
67, 65, 76, 76, 84, 82, 48, 48, 0, 67, 3, 0, 0, 67, 84, 67, /* 0x cb0 */
76, 69, 86, 69, 49, 0, 81, 3, 0, 0, 0, 0, 0, 0, 86, 3, /* 0x cc0 */
0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 5, 0, 0, 0, 67, /* 0x cd0 */
65, 76, 76, 84, 82, 48, 49, 0, 86, 3, 0, 0, 67, 84, 68, 85, /* 0x ce0 */
77, 77, 89, 49, 0, 91, 3, 0, 0, 67, 84, 66, 83, 72, 82, 48, /* 0x cf0 */
49, 0, 91, 3, 0, 0, 67, 84, 66, 82, 79, 82, 48, 49, 0, 95, /* 0x d00 */
3, 0, 0, 67, 84, 66, 83, 87, 65, 48, 49, 0, 97, 3, 0, 0, /* 0x d10 */
67, 65, 76, 76, 84, 82, 48, 50, 0,102, 3, 0, 0, 0, 0, 0, /* 0x d20 */
0,118, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 10, 0, /* 0x d30 */
0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0,118, 3, 0, 0, 67, /* 0x d40 */
65, 76, 76, 84, 82, 69, 56, 0,123, 3, 0, 0, 67, 65, 76, 76, /* 0x d50 */
84, 82, 69, 57, 0,125, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, /* 0x d60 */
49, 0,127, 3, 0, 0, 0, 0, 0, 0,131, 3, 0, 0, 67, 65, /* 0x d70 */
76, 76, 84, 82, 49, 51, 0, 7, 0, 0, 0, 67, 84, 67, 76, 69, /* 0x d80 */
86, 69, 50, 0,131, 3, 0, 0, 0, 0, 0, 0,136, 3, 0, 0, /* 0x d90 */
67, 65, 76, 76, 84, 82, 49, 49, 0, 0, 0, 0, 0, 67, 65, 76, /* 0x da0 */
76, 84, 82, 49, 50, 0,136, 3, 0, 0, 67, 84, 68, 85, 77, 77, /* 0x db0 */
89, 50, 0,138, 3, 0, 0, 67, 84, 66, 83, 72, 82, 49, 49, 0, /* 0x dc0 */
138, 3, 0, 0, 67, 84, 66, 82, 79, 82, 49, 49, 0,142, 3, 0, /* 0x dd0 */
0, 67, 84, 66, 83, 87, 65, 49, 49, 0,144, 3, 0, 0, 67, 65, /* 0x de0 */
76, 76, 84, 82, 49, 51, 0,149, 3, 0, 0, 0, 0, 0, 0,156, /* 0x df0 */
3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0, 5, 0, 0, 0, /* 0x e00 */
67, 84, 84, 72, 69, 69, 78, 68, 0,156, 3, 0, 0, 80, 69, 68, /* 0x e10 */
85, 77, 77, 89, 49, 0,156, 3, 0, 0, 80, 69, 73, 77, 80, 79, /* 0x e20 */
82, 84, 0,156, 3, 0, 0, 0, 0, 0, 0,168, 3, 0, 0, 80, /* 0x e30 */
69, 73, 77, 68, 79, 78, 69, 0, 0, 0, 0, 0, 80, 69, 73, 66, /* 0x e40 */
89, 79, 82, 68, 0,200, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, /* 0x e50 */
0, 80, 69, 73, 77, 79, 82, 68, 49, 0, 7, 0, 0, 0, 80, 69, /* 0x e60 */
75, 51, 50, 79, 82, 68, 0,202, 3, 0, 0, 0, 0, 0, 0,218, /* 0x e70 */
3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 50, 0, 15, 0, 0, 0, /* 0x e80 */
80, 69, 73, 77, 79, 82, 68, 49, 0,218, 3, 0, 0, 80, 69, 73, /* 0x e90 */
77, 80, 79, 82, 50, 0,225, 3, 0, 0, 0, 0, 0, 0,247, 3, /* 0x ea0 */
0, 0, 80, 69, 73, 77, 80, 79, 82, 84, 0, 35, 0, 0, 0, 80, /* 0x eb0 */
69, 73, 69, 82, 68, 76, 76, 0,247, 3, 0, 0, 80, 69, 73, 69, /* 0x ec0 */
82, 69, 88, 69, 0,253, 3, 0, 0, 80, 69, 73, 77, 68, 79, 78, /* 0x ed0 */
69, 0, 3, 4, 0, 0, 80, 69, 73, 77, 80, 79, 82, 57, 0, 3, /* 0x ee0 */
4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 49, 0, 3, 4, 0, 0, /* 0x ef0 */
80, 69, 82, 69, 76, 79, 67, 50, 0, 9, 4, 0, 0, 80, 69, 82, /* 0x f00 */
69, 76, 79, 67, 51, 0, 12, 4, 0, 0, 82, 69, 76, 79, 67, 51, /* 0x f10 */
50, 48, 0, 15, 4, 0, 0, 0, 0, 0, 0, 24, 4, 0, 0, 82, /* 0x f20 */
69, 76, 79, 67, 51, 50, 74, 0, 2, 0, 0, 0, 82, 69, 76, 51, /* 0x f30 */
50, 66, 73, 71, 0, 56, 4, 0, 0, 0, 0, 0, 0, 60, 4, 0, /* 0x f40 */
0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 13, 0, 0, 0, 82, 69, /* 0x f50 */
76, 79, 67, 51, 50, 74, 0, 65, 4, 0, 0, 0, 0, 0, 0, 67, /* 0x f60 */
4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 13, 0, 0, 0, /* 0x f70 */
82, 69, 76, 51, 50, 69, 78, 68, 0, 67, 4, 0, 0, 80, 69, 82, /* 0x f80 */
69, 76, 79, 67, 57, 0, 67, 4, 0, 0, 80, 69, 82, 76, 79, 72, /* 0x f90 */
73, 48, 0, 67, 4, 0, 0, 80, 69, 82, 76, 79, 72, 73, 90, 0, /* 0x fa0 */
75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, 48, 0, 75, 4, 0, /* 0x fb0 */
0, 80, 69, 82, 69, 76, 76, 79, 90, 0, 85, 4, 0, 0, 80, 69, /* 0x fc0 */
82, 69, 76, 72, 73, 48, 0, 85, 4, 0, 0, 80, 69, 82, 69, 76, /* 0x fd0 */
72, 73, 90, 0, 98, 4, 0, 0, 80, 69, 77, 65, 73, 78, 50, 48, /* 0x fe0 */
0, 98, 4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 0, 99, 4, /* 0x ff0 */
0, 0, 80, 69, 68, 79, 74, 85, 77, 80, 0,105, 4, 0, 0, 80, /* 0x1000 */
69, 68, 85, 77, 77, 89, 51, 0,110, 4, 0, 0, 85, 80, 88, 49, /* 0x1010 */
72, 69, 65, 68, 0,110, 4, 0, 0, 80, 69, 84, 72, 69, 69, 78, /* 0x1020 */
68, 0,142, 4, 0, 0,255,255,255,255,142, 4 /* 0x1030 */
117,247,139,174, 86, 80, 82, 79,187, 0, 16, 0, 0,141,190, 73, /* 0x 460 */
77, 71, 66,106, 0,106, 4, 83, 87,255,213,128,167, 83, 87, 82, /* 0x 470 */
73,127,106, 0,106, 2, 83, 87,255,213, 97, 49,192, 64,194, 12, /* 0x 480 */
0,233, 74, 77, 80, 79, 85, 80, 88, 33,161,216,208,213, 0, 0, /* 0x 490 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4a0 */
0, 0, 0, 0, 0, 45, 0, 0, 80, 69, 73, 83, 68, 76, 76, 49, /* 0x 4b0 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 80, 69, 77, /* 0x 4c0 */
65, 73, 78, 50, 48, 0, 1, 0, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x 4d0 */
48, 49, 0, 11, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 49, 0, /* 0x 4e0 */
23, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 50, 0, 30, 0, 0, /* 0x 4f0 */
0, 80, 69, 73, 67, 79, 78, 83, 90, 0, 39, 0, 0, 0, 80, 69, /* 0x 500 */
84, 76, 83, 72, 65, 75, 0, 39, 0, 0, 0, 80, 69, 77, 65, 73, /* 0x 510 */
78, 48, 50, 0, 49, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, /* 0x 520 */
0, 53, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 78, 50, 66, /* 0x 530 */
68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 540 */
49, 48, 0, 56, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 78, /* 0x 550 */
50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, /* 0x 560 */
65, 83, 49, 49, 0, 58, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 570 */
48, 0, 64, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0, 75, /* 0x 580 */
0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 590 */
65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, /* 0x 5a0 */
0, 80, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 78, 50, 66, /* 0x 5b0 */
70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 5c0 */
50, 48, 0, 87, 0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0, /* 0x 5d0 */
100, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0, 78, 50, 66, 68, /* 0x 5e0 */
69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, /* 0x 5f0 */
48, 0,113, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 78, 50, /* 0x 600 */
66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, /* 0x 610 */
0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, /* 0x 620 */
78, 50, 66, 68, 69, 67, 51, 48, 0,128, 0, 0, 0, 0, 0, 0, /* 0x 630 */
0,146, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, /* 0x 640 */
0, 0, 0, 0, 0, 0,176, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 650 */
53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0, /* 0x 660 */
190, 0, 0, 0, 0, 0, 0, 0,203, 0, 0, 0, 78, 50, 66, 68, /* 0x 670 */
69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, /* 0x 680 */
48, 0,203, 0, 0, 0, 0, 0, 0, 0,207, 0, 0, 0, 78, 50, /* 0x 690 */
66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0,218, /* 0x 6a0 */
0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, /* 0x 6b0 */
78, 50, 66, 68, 85, 77, 77, 49, 0,218, 0, 0, 0, 78, 50, 66, /* 0x 6c0 */
83, 77, 65, 53, 48, 0,218, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 6d0 */
53, 48, 0,220, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, /* 0x 6e0 */
223, 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0,232, 0, 0, /* 0x 6f0 */
0, 0, 0, 0, 0,246, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 700 */
48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0,246, /* 0x 710 */
0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 720 */
83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0, /* 0x 730 */
78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 740 */
70, 65, 83, 54, 49, 0, 12, 1, 0, 0, 0, 0, 0, 0, 34, 1, /* 0x 750 */
0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 760 */
50, 66, 68, 69, 67, 54, 48, 0, 34, 1, 0, 0, 78, 82, 86, 50, /* 0x 770 */
66, 69, 78, 68, 0, 34, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, /* 0x 780 */
48, 0, 34, 1, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 78, 50, /* 0x 790 */
68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 7a0 */
83, 49, 48, 0, 37, 1, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, /* 0x 7b0 */
78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, /* 0x 7c0 */
70, 65, 83, 49, 49, 0, 39, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 7d0 */
49, 48, 0, 45, 1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0, /* 0x 7e0 */
56, 1, 0, 0, 0, 0, 0, 0, 58, 1, 0, 0, 78, 50, 68, 83, /* 0x 7f0 */
77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, /* 0x 800 */
48, 0, 61, 1, 0, 0, 0, 0, 0, 0, 63, 1, 0, 0, 78, 50, /* 0x 810 */
68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, /* 0x 820 */
67, 50, 48, 0, 68, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, /* 0x 830 */
0, 81, 1, 0, 0, 0, 0, 0, 0, 94, 1, 0, 0, 78, 50, 68, /* 0x 840 */
68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x 850 */
51, 48, 0, 94, 1, 0, 0, 0, 0, 0, 0,100, 1, 0, 0, 78, /* 0x 860 */
50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0, /* 0x 870 */
109, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, /* 0x 880 */
0, 78, 50, 68, 68, 69, 67, 51, 48, 0,109, 1, 0, 0, 0, 0, /* 0x 890 */
0, 0,125, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, /* 0x 8a0 */
0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 78, 50, 68, 68, 69, /* 0x 8b0 */
67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 1, 0, 0, /* 0x 8c0 */
78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x 8d0 */
83, 77, 65, 52, 48, 0,191, 1, 0, 0, 0, 0, 0, 0,204, 1, /* 0x 8e0 */
0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, /* 0x 8f0 */
50, 68, 70, 65, 83, 52, 48, 0,204, 1, 0, 0, 0, 0, 0, 0, /* 0x 900 */
208, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, /* 0x 910 */
0, 0, 0, 0, 0,219, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 920 */
48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0,219, /* 0x 930 */
1, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,219, 1, 0, 0, /* 0x 940 */
78, 50, 68, 70, 65, 83, 53, 48, 0,221, 1, 0, 0, 78, 50, 68, /* 0x 950 */
68, 69, 67, 53, 48, 0,224, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 960 */
54, 48, 0,233, 1, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 78, /* 0x 970 */
50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, /* 0x 980 */
65, 83, 54, 48, 0,247, 1, 0, 0, 0, 0, 0, 0,255, 1, 0, /* 0x 990 */
0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, /* 0x 9a0 */
0, 0, 13, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, /* 0x 9b0 */
0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 13, 2, 0, 0, /* 0x 9c0 */
0, 0, 0, 0, 35, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x 9d0 */
0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 35, 2, /* 0x 9e0 */
0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 35, 2, 0, 0, 78, /* 0x 9f0 */
50, 69, 83, 77, 65, 49, 48, 0, 35, 2, 0, 0, 0, 0, 0, 0, /* 0x a00 */
37, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, /* 0x a10 */
0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 38, 2, 0, 0, 0, 0, /* 0x a20 */
0, 0, 40, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, /* 0x a30 */
0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 40, 2, 0, 0, /* 0x a40 */
78, 50, 69, 68, 69, 67, 49, 48, 0, 46, 2, 0, 0, 78, 50, 69, /* 0x a50 */
83, 77, 65, 50, 48, 0, 57, 2, 0, 0, 0, 0, 0, 0, 59, 2, /* 0x a60 */
0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, /* 0x a70 */
50, 69, 70, 65, 83, 50, 48, 0, 62, 2, 0, 0, 0, 0, 0, 0, /* 0x a80 */
64, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, /* 0x a90 */
0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 69, 2, 0, 0, 78, 50, /* 0x aa0 */
69, 83, 77, 65, 51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, 95, /* 0x ab0 */
2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, /* 0x ac0 */
78, 50, 69, 70, 65, 83, 51, 48, 0, 95, 2, 0, 0, 0, 0, 0, /* 0x ad0 */
0,101, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, /* 0x ae0 */
0, 0, 0, 0, 0, 0,110, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x af0 */
51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x b00 */
110, 2, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 78, 50, 69, 68, /* 0x b10 */
69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, /* 0x b20 */
0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x b30 */
0, 0,159, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, /* 0x b40 */
0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,205, 2, 0, 0, /* 0x b50 */
0, 0, 0, 0,218, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x b60 */
0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, 0,218, 2, /* 0x b70 */
0, 0, 0, 0, 0, 0,222, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x b80 */
51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,233, 2, 0, 0, 78, /* 0x b90 */
50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, /* 0x ba0 */
85, 77, 77, 49, 0,233, 2, 0, 0, 78, 50, 69, 83, 77, 65, 53, /* 0x bb0 */
48, 0,233, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0,235, /* 0x bc0 */
2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,238, 2, 0, 0, /* 0x bd0 */
78, 50, 69, 83, 77, 65, 54, 48, 0,247, 2, 0, 0, 0, 0, 0, /* 0x be0 */
0, 5, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x bf0 */
0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0, 5, 3, 0, 0, 0, /* 0x c00 */
0, 0, 0, 13, 3, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, /* 0x c10 */
0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 0, 0, 78, 50, 69, 68, /* 0x c20 */
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, /* 0x c30 */
49, 0, 27, 3, 0, 0, 0, 0, 0, 0, 49, 3, 0, 0, 78, 50, /* 0x c40 */
69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, /* 0x c50 */
67, 54, 48, 0, 49, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, /* 0x c60 */
0, 49, 3, 0, 0, 80, 69, 77, 85, 76, 84, 73, 80, 0, 49, 3, /* 0x c70 */
0, 0, 0, 0, 0, 0, 58, 3, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x c80 */
48, 50, 0, 1, 0, 0, 0, 80, 69, 77, 65, 73, 78, 49, 48, 0, /* 0x c90 */
58, 3, 0, 0, 80, 69, 67, 65, 76, 76, 84, 82, 0, 59, 3, 0, /* 0x ca0 */
0, 80, 69, 67, 84, 84, 80, 79, 83, 0, 59, 3, 0, 0, 80, 69, /* 0x cb0 */
67, 84, 84, 78, 85, 76, 0, 65, 3, 0, 0, 80, 69, 68, 85, 77, /* 0x cc0 */
77, 89, 48, 0, 67, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, /* 0x cd0 */
0, 67, 3, 0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 81, 3, /* 0x ce0 */
0, 0, 0, 0, 0, 0, 86, 3, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x cf0 */
48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, /* 0x d00 */
86, 3, 0, 0, 67, 84, 68, 85, 77, 77, 89, 49, 0, 91, 3, 0, /* 0x d10 */
0, 67, 84, 66, 83, 72, 82, 48, 49, 0, 91, 3, 0, 0, 67, 84, /* 0x d20 */
66, 82, 79, 82, 48, 49, 0, 95, 3, 0, 0, 67, 84, 66, 83, 87, /* 0x d30 */
65, 48, 49, 0, 97, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, /* 0x d40 */
0,102, 3, 0, 0, 0, 0, 0, 0,118, 3, 0, 0, 67, 65, 76, /* 0x d50 */
76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x d60 */
49, 48, 0,118, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, /* 0x d70 */
123, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 57, 0,125, 3, 0, /* 0x d80 */
0, 67, 65, 76, 76, 84, 82, 49, 49, 0,127, 3, 0, 0, 0, 0, /* 0x d90 */
0, 0,131, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 7, /* 0x da0 */
0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, 0,131, 3, 0, 0, /* 0x db0 */
0, 0, 0, 0,136, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, /* 0x dc0 */
0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0,136, 3, /* 0x dd0 */
0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0,138, 3, 0, 0, 67, /* 0x de0 */
84, 66, 83, 72, 82, 49, 49, 0,138, 3, 0, 0, 67, 84, 66, 82, /* 0x df0 */
79, 82, 49, 49, 0,142, 3, 0, 0, 67, 84, 66, 83, 87, 65, 49, /* 0x e00 */
49, 0,144, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,149, /* 0x e10 */
3, 0, 0, 0, 0, 0, 0,156, 3, 0, 0, 67, 65, 76, 76, 84, /* 0x e20 */
82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, /* 0x e30 */
0,156, 3, 0, 0, 80, 69, 68, 85, 77, 77, 89, 49, 0,156, 3, /* 0x e40 */
0, 0, 80, 69, 73, 77, 80, 79, 82, 84, 0,156, 3, 0, 0, 0, /* 0x e50 */
0, 0, 0,168, 3, 0, 0, 80, 69, 73, 77, 68, 79, 78, 69, 0, /* 0x e60 */
0, 0, 0, 0, 80, 69, 73, 66, 89, 79, 82, 68, 0,200, 3, 0, /* 0x e70 */
0, 0, 0, 0, 0,202, 3, 0, 0, 80, 69, 73, 77, 79, 82, 68, /* 0x e80 */
49, 0, 7, 0, 0, 0, 80, 69, 75, 51, 50, 79, 82, 68, 0,202, /* 0x e90 */
3, 0, 0, 0, 0, 0, 0,218, 3, 0, 0, 80, 69, 73, 77, 80, /* 0x ea0 */
79, 82, 50, 0, 15, 0, 0, 0, 80, 69, 73, 77, 79, 82, 68, 49, /* 0x eb0 */
0,218, 3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 50, 0,225, 3, /* 0x ec0 */
0, 0, 0, 0, 0, 0,247, 3, 0, 0, 80, 69, 73, 77, 80, 79, /* 0x ed0 */
82, 84, 0, 35, 0, 0, 0, 80, 69, 73, 69, 82, 68, 76, 76, 0, /* 0x ee0 */
247, 3, 0, 0, 80, 69, 73, 69, 82, 69, 88, 69, 0,253, 3, 0, /* 0x ef0 */
0, 80, 69, 73, 77, 68, 79, 78, 69, 0, 3, 4, 0, 0, 80, 69, /* 0x f00 */
73, 77, 80, 79, 82, 57, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, /* 0x f10 */
79, 67, 49, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 50, /* 0x f20 */
0, 9, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 51, 0, 12, 4, /* 0x f30 */
0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 15, 4, 0, 0, 0, /* 0x f40 */
0, 0, 0, 24, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, /* 0x f50 */
2, 0, 0, 0, 82, 69, 76, 51, 50, 66, 73, 71, 0, 56, 4, 0, /* 0x f60 */
0, 0, 0, 0, 0, 60, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, /* 0x f70 */
48, 0, 13, 0, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, 65, /* 0x f80 */
4, 0, 0, 0, 0, 0, 0, 67, 4, 0, 0, 82, 69, 76, 79, 67, /* 0x f90 */
51, 50, 48, 0, 13, 0, 0, 0, 82, 69, 76, 51, 50, 69, 78, 68, /* 0x fa0 */
0, 67, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 57, 0, 67, 4, /* 0x fb0 */
0, 0, 80, 69, 82, 76, 79, 72, 73, 48, 0, 67, 4, 0, 0, 80, /* 0x fc0 */
69, 82, 76, 79, 72, 73, 90, 0, 75, 4, 0, 0, 80, 69, 82, 69, /* 0x fd0 */
76, 76, 79, 48, 0, 75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, /* 0x fe0 */
90, 0, 85, 4, 0, 0, 80, 69, 82, 69, 76, 72, 73, 48, 0, 85, /* 0x ff0 */
4, 0, 0, 80, 69, 82, 69, 76, 72, 73, 90, 0, 98, 4, 0, 0, /* 0x1000 */
80, 69, 68, 69, 80, 72, 65, 75, 0, 98, 4, 0, 0, 80, 69, 68, /* 0x1010 */
69, 80, 72, 65, 88, 0,138, 4, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x1020 */
50, 48, 0,138, 4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 0, /* 0x1030 */
139, 4, 0, 0, 80, 69, 68, 79, 74, 85, 77, 80, 0,145, 4, 0, /* 0x1040 */
0, 80, 69, 68, 85, 77, 77, 89, 51, 0,150, 4, 0, 0, 85, 80, /* 0x1050 */
88, 49, 72, 69, 65, 68, 0,150, 4, 0, 0, 80, 69, 84, 72, 69, /* 0x1060 */
69, 78, 68, 0,182, 4, 0, 0,255,255,255,255,182, 4 /* 0x1070 */
};