From 667f3c5fef7834b6f414af635d0f523857ad26ba Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 20 Jun 2021 18:55:19 -0400 Subject: [PATCH 1/5] =?UTF-8?q?Don=E2=80=99t=20link=20against=20-lcrypt=20?= =?UTF-8?q?or=20-lcrypto.=20Preliminary=20Makefile=20cleanup.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since all of the cryptographic primitives required by asleap (DES, MD4, and SHA1) are obsolete, it is best to ship implementations ourselves rather than rely on external libraries that may deprecate them or remove them altogether. SHA1 is already being supplied by sha1.c, but MD4 is optionally supplied by OpenSSL (libcrypto) and for DES we are relying on the obsolete SVID functions ‘encrypt’ and ‘setkey’. Remove the ifdefs in common.c and genkeys.c allowing for the use of OpenSSL’s implementation of MD4. In the Makefile, remove both -lxcrypt and -lcrypto from LDLIBS, and add md4.o to the link for both asleap and genkeys. This means the program will not compile right now, with undefined references to ‘encrypt’ and ‘setkey’—this will be corrected in the next commit. While we’re messing with the Makefile, overhaul it with proper use of object files, built-in rules and variables, and comprehensive .c:.h dependency lists. While we’re messing with the Makefile, eliminate the only place where we need a -D_LINUX by instead using __GNU_LIBRARY__ to detect the availability of . This *may* mean makefile.cygwin is no longer necessary. Will come back to that. --- Makefile | 40 ++++++++++++++++++---------------------- common.c | 13 ++----------- genkeys.c | 2 -- sha1.c | 8 ++++---- 4 files changed, 24 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index 905936b..bb48dfe 100644 --- a/Makefile +++ b/Makefile @@ -7,35 +7,31 @@ # i think thats all anyone does # make is a twisted beast ################################## -LDLIBS = -lpcap -lxcrypt -CFLAGS = -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -LDLIBS += -lcrypto -CFLAGS += -g3 #-ggdb -g -PROGOBJ = asleap.o genkeys.o utils.o common.o sha1.o -PROG = asleap genkeys -#CC = clang-10 -CC = gcc - -all: $(PROG) $(PROGOBJ) +CFLAGS = -g3 -Og -Wall +CPPFLAGS = +LDLIBS = -lpcap -utils: utils.c utils.h - $(CC) $(CFLAGS) utils.c -c +PROG = asleap genkeys +COMMON_OBJS = common.o md4.o sha1.o utils.o -common: common.c common.h - $(CC) $(CFLAGS) common.c -c +all: $(PROG) -sha1: sha1.c sha1.h - $(CC) $(CFLAGS) sha1.c -c +asleap: asleap.o $(COMMON_OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS) -asleap: asleap.c asleap.h sha1.o common.o common.h utils.o version.h sha1.c \ - sha1.h - $(CC) $(CFLAGS) asleap.c -o asleap common.o utils.o sha1.o $(LDLIBS) +genkeys: genkeys.o $(COMMON_OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS) -genkeys: genkeys.c md4.c md4.h common.o utils.o version.h common.h - $(CC) $(CFLAGS) md4.c genkeys.c -o genkeys common.o utils.o $(LDLIBS) +asleap.o: asleap.c asleap.h utils.h common.h version.h sha1.h radiotap.h \ + byteswap.h ieee80211.h ieee8021x.h ietfproto.h +common.o: common.c common.h utils.h md4.h +genkeys.o: genkeys.c common.h version.h utils.h +sha1.o: sha1.c common.h sha1.h +md4.o: md4.c md4.h +utils.o: utils.c utils.h clean: - $(RM) $(PROGOBJ) $(PROG) *~ + -rm -f $(PROG) asleap.o genkeys.o $(COMMON_OBJS) strip: @ls -l $(PROG) diff --git a/common.c b/common.c index bd37138..9bda1ce 100644 --- a/common.c +++ b/common.c @@ -26,19 +26,10 @@ #include #include #include + #include "common.h" #include "utils.h" - -#ifdef _OPENSSL_MD4 -#include -#define MD4Init MD4_Init -#define MD4Update MD4_Update -#define MD4Final MD4_Final -#define MD4WRAP MD4 -#else #include "md4.h" -#define MD4WRAP md4 -#endif /* written from scratch * Copyright (C) 2001 Jochen Eisinger, University of Freiburg @@ -125,5 +116,5 @@ void NtPasswordHash(char *secret, int secret_len, unsigned char *hash) unicodePassword[i * 2] = (unsigned char)secret[i]; /* Unicode is 2 bytes per char */ - MD4WRAP(unicodePassword, secret_len * 2, hash); + md4(unicodePassword, secret_len * 2, hash); } diff --git a/genkeys.c b/genkeys.c index 2803367..545b70e 100644 --- a/genkeys.c +++ b/genkeys.c @@ -219,14 +219,12 @@ int main(int argc, char *argv[]) password[strlen(password) - 1] = 0; } -#ifndef _OPENSSL_MD4 /* md4.c seems to have a problem with passwords longer than 31 bytes. This seems odd to me, but it should have little impact on our final product, since I assume there are few passwords we will be able to identify with a dictionary attack that are longer than 31 bytes. */ password[31] = 0; -#endif NtPasswordHash(password, strlen(password), pwhash); diff --git a/sha1.c b/sha1.c index 7be1c7d..ca77121 100644 --- a/sha1.c +++ b/sha1.c @@ -16,13 +16,13 @@ #include #include -#ifndef _LINUX -#warning "Assuming little-endian for Windows" -#else -#include +#ifdef __GNU_LIBRARY__ +# include # if __BYTE_ORDER == __BIG_ENDIAN # define WORDS_BIGENDIAN # endif +#else +# warning "Assuming little-endian for non-glibc (endian.h not available)" #endif #include "common.h" From 5d255cbd4f0be7b4370a450673b780b7c381fb0a Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 20 Jun 2021 19:29:34 -0400 Subject: [PATCH 2/5] Import DES implementation from libxcrypt. This implementation was originally written by David Burren for NetBSD and is therefore under a 3-clause BSD license. By using it directly, the Expand and Collapse operations in utils.c cease to be necessary. --- Makefile | 4 +- des-tables.c | 3853 ++++++++++++++++++++++++++++++++++++++++++++++++++ des.c | 280 ++++ des.h | 77 + utils.c | 49 +- 5 files changed, 4219 insertions(+), 44 deletions(-) create mode 100644 des-tables.c create mode 100644 des.c create mode 100644 des.h diff --git a/Makefile b/Makefile index bb48dfe..51552c8 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ CPPFLAGS = LDLIBS = -lpcap PROG = asleap genkeys -COMMON_OBJS = common.o md4.o sha1.o utils.o +COMMON_OBJS = common.o des.o des-tables.o md4.o sha1.o utils.o all: $(PROG) @@ -25,6 +25,8 @@ genkeys: genkeys.o $(COMMON_OBJS) asleap.o: asleap.c asleap.h utils.h common.h version.h sha1.h radiotap.h \ byteswap.h ieee80211.h ieee8021x.h ietfproto.h common.o: common.c common.h utils.h md4.h +des.o: des.c des.h +des-tables.o: des-tables.c des.h genkeys.o: genkeys.c common.h version.h utils.h sha1.o: sha1.c common.h sha1.h md4.o: md4.c md4.h diff --git a/des-tables.c b/des-tables.c new file mode 100644 index 0000000..63a4713 --- /dev/null +++ b/des-tables.c @@ -0,0 +1,3853 @@ +/* + * FreeSec: libcrypt for NetBSD + * + * Copyright (c) 1994 David Burren + * All rights reserved. + * + * Adapted for FreeBSD-2.0 by Geoffrey M. Rehmet + * this file should now *only* export crypt(), in order to make + * binaries of libcrypt exportable from the USA + * + * Adapted for FreeBSD-4.0 by Mark R V Murray + * this file should now *only* export crypt_des(), in order to make + * a module that can be optionally included in libcrypt. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the author nor the names of other contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This is an original implementation of the DES and the crypt(3) interfaces + * by David Burren . + */ + +/* + * The tables in this file were generated from a more compact + * representation of the DES S-boxes and P-boxes by the program + * gen-des-tables.c in the original FreeSec tree. + */ + +#include "des.h" + +const uint8_t m_sbox[4][4096] = +{ + { + 0xef, 0xe3, 0xe1, 0xed, 0xe8, 0xe4, 0xee, 0xe7, 0xe6, 0xef, 0xeb, 0xe2, + 0xe3, 0xe8, 0xe4, 0xee, 0xe9, 0xec, 0xe7, 0xe0, 0xe2, 0xe1, 0xed, 0xea, + 0xec, 0xe6, 0xe0, 0xe9, 0xe5, 0xeb, 0xea, 0xe5, 0xe0, 0xed, 0xee, 0xe8, + 0xe7, 0xea, 0xeb, 0xe1, 0xea, 0xe3, 0xe4, 0xef, 0xed, 0xe4, 0xe1, 0xe2, + 0xe5, 0xeb, 0xe8, 0xe6, 0xec, 0xe7, 0xe6, 0xec, 0xe9, 0xe0, 0xe3, 0xe5, + 0xe2, 0xee, 0xef, 0xe9, 0x0f, 0x03, 0x01, 0x0d, 0x08, 0x04, 0x0e, 0x07, + 0x06, 0x0f, 0x0b, 0x02, 0x03, 0x08, 0x04, 0x0e, 0x09, 0x0c, 0x07, 0x00, + 0x02, 0x01, 0x0d, 0x0a, 0x0c, 0x06, 0x00, 0x09, 0x05, 0x0b, 0x0a, 0x05, + 0x00, 0x0d, 0x0e, 0x08, 0x07, 0x0a, 0x0b, 0x01, 0x0a, 0x03, 0x04, 0x0f, + 0x0d, 0x04, 0x01, 0x02, 0x05, 0x0b, 0x08, 0x06, 0x0c, 0x07, 0x06, 0x0c, + 0x09, 0x00, 0x03, 0x05, 0x02, 0x0e, 0x0f, 0x09, 0x4f, 0x43, 0x41, 0x4d, + 0x48, 0x44, 0x4e, 0x47, 0x46, 0x4f, 0x4b, 0x42, 0x43, 0x48, 0x44, 0x4e, + 0x49, 0x4c, 0x47, 0x40, 0x42, 0x41, 0x4d, 0x4a, 0x4c, 0x46, 0x40, 0x49, + 0x45, 0x4b, 0x4a, 0x45, 0x40, 0x4d, 0x4e, 0x48, 0x47, 0x4a, 0x4b, 0x41, + 0x4a, 0x43, 0x44, 0x4f, 0x4d, 0x44, 0x41, 0x42, 0x45, 0x4b, 0x48, 0x46, + 0x4c, 0x47, 0x46, 0x4c, 0x49, 0x40, 0x43, 0x45, 0x42, 0x4e, 0x4f, 0x49, + 0xff, 0xf3, 0xf1, 0xfd, 0xf8, 0xf4, 0xfe, 0xf7, 0xf6, 0xff, 0xfb, 0xf2, + 0xf3, 0xf8, 0xf4, 0xfe, 0xf9, 0xfc, 0xf7, 0xf0, 0xf2, 0xf1, 0xfd, 0xfa, + 0xfc, 0xf6, 0xf0, 0xf9, 0xf5, 0xfb, 0xfa, 0xf5, 0xf0, 0xfd, 0xfe, 0xf8, + 0xf7, 0xfa, 0xfb, 0xf1, 0xfa, 0xf3, 0xf4, 0xff, 0xfd, 0xf4, 0xf1, 0xf2, + 0xf5, 0xfb, 0xf8, 0xf6, 0xfc, 0xf7, 0xf6, 0xfc, 0xf9, 0xf0, 0xf3, 0xf5, + 0xf2, 0xfe, 0xff, 0xf9, 0xdf, 0xd3, 0xd1, 0xdd, 0xd8, 0xd4, 0xde, 0xd7, + 0xd6, 0xdf, 0xdb, 0xd2, 0xd3, 0xd8, 0xd4, 0xde, 0xd9, 0xdc, 0xd7, 0xd0, + 0xd2, 0xd1, 0xdd, 0xda, 0xdc, 0xd6, 0xd0, 0xd9, 0xd5, 0xdb, 0xda, 0xd5, + 0xd0, 0xdd, 0xde, 0xd8, 0xd7, 0xda, 0xdb, 0xd1, 0xda, 0xd3, 0xd4, 0xdf, + 0xdd, 0xd4, 0xd1, 0xd2, 0xd5, 0xdb, 0xd8, 0xd6, 0xdc, 0xd7, 0xd6, 0xdc, + 0xd9, 0xd0, 0xd3, 0xd5, 0xd2, 0xde, 0xdf, 0xd9, 0x7f, 0x73, 0x71, 0x7d, + 0x78, 0x74, 0x7e, 0x77, 0x76, 0x7f, 0x7b, 0x72, 0x73, 0x78, 0x74, 0x7e, + 0x79, 0x7c, 0x77, 0x70, 0x72, 0x71, 0x7d, 0x7a, 0x7c, 0x76, 0x70, 0x79, + 0x75, 0x7b, 0x7a, 0x75, 0x70, 0x7d, 0x7e, 0x78, 0x77, 0x7a, 0x7b, 0x71, + 0x7a, 0x73, 0x74, 0x7f, 0x7d, 0x74, 0x71, 0x72, 0x75, 0x7b, 0x78, 0x76, + 0x7c, 0x77, 0x76, 0x7c, 0x79, 0x70, 0x73, 0x75, 0x72, 0x7e, 0x7f, 0x79, + 0x1f, 0x13, 0x11, 0x1d, 0x18, 0x14, 0x1e, 0x17, 0x16, 0x1f, 0x1b, 0x12, + 0x13, 0x18, 0x14, 0x1e, 0x19, 0x1c, 0x17, 0x10, 0x12, 0x11, 0x1d, 0x1a, + 0x1c, 0x16, 0x10, 0x19, 0x15, 0x1b, 0x1a, 0x15, 0x10, 0x1d, 0x1e, 0x18, + 0x17, 0x1a, 0x1b, 0x11, 0x1a, 0x13, 0x14, 0x1f, 0x1d, 0x14, 0x11, 0x12, + 0x15, 0x1b, 0x18, 0x16, 0x1c, 0x17, 0x16, 0x1c, 0x19, 0x10, 0x13, 0x15, + 0x12, 0x1e, 0x1f, 0x19, 0x4f, 0x43, 0x41, 0x4d, 0x48, 0x44, 0x4e, 0x47, + 0x46, 0x4f, 0x4b, 0x42, 0x43, 0x48, 0x44, 0x4e, 0x49, 0x4c, 0x47, 0x40, + 0x42, 0x41, 0x4d, 0x4a, 0x4c, 0x46, 0x40, 0x49, 0x45, 0x4b, 0x4a, 0x45, + 0x40, 0x4d, 0x4e, 0x48, 0x47, 0x4a, 0x4b, 0x41, 0x4a, 0x43, 0x44, 0x4f, + 0x4d, 0x44, 0x41, 0x42, 0x45, 0x4b, 0x48, 0x46, 0x4c, 0x47, 0x46, 0x4c, + 0x49, 0x40, 0x43, 0x45, 0x42, 0x4e, 0x4f, 0x49, 0x2f, 0x23, 0x21, 0x2d, + 0x28, 0x24, 0x2e, 0x27, 0x26, 0x2f, 0x2b, 0x22, 0x23, 0x28, 0x24, 0x2e, + 0x29, 0x2c, 0x27, 0x20, 0x22, 0x21, 0x2d, 0x2a, 0x2c, 0x26, 0x20, 0x29, + 0x25, 0x2b, 0x2a, 0x25, 0x20, 0x2d, 0x2e, 0x28, 0x27, 0x2a, 0x2b, 0x21, + 0x2a, 0x23, 0x24, 0x2f, 0x2d, 0x24, 0x21, 0x22, 0x25, 0x2b, 0x28, 0x26, + 0x2c, 0x27, 0x26, 0x2c, 0x29, 0x20, 0x23, 0x25, 0x22, 0x2e, 0x2f, 0x29, + 0xef, 0xe3, 0xe1, 0xed, 0xe8, 0xe4, 0xee, 0xe7, 0xe6, 0xef, 0xeb, 0xe2, + 0xe3, 0xe8, 0xe4, 0xee, 0xe9, 0xec, 0xe7, 0xe0, 0xe2, 0xe1, 0xed, 0xea, + 0xec, 0xe6, 0xe0, 0xe9, 0xe5, 0xeb, 0xea, 0xe5, 0xe0, 0xed, 0xee, 0xe8, + 0xe7, 0xea, 0xeb, 0xe1, 0xea, 0xe3, 0xe4, 0xef, 0xed, 0xe4, 0xe1, 0xe2, + 0xe5, 0xeb, 0xe8, 0xe6, 0xec, 0xe7, 0xe6, 0xec, 0xe9, 0xe0, 0xe3, 0xe5, + 0xe2, 0xee, 0xef, 0xe9, 0xff, 0xf3, 0xf1, 0xfd, 0xf8, 0xf4, 0xfe, 0xf7, + 0xf6, 0xff, 0xfb, 0xf2, 0xf3, 0xf8, 0xf4, 0xfe, 0xf9, 0xfc, 0xf7, 0xf0, + 0xf2, 0xf1, 0xfd, 0xfa, 0xfc, 0xf6, 0xf0, 0xf9, 0xf5, 0xfb, 0xfa, 0xf5, + 0xf0, 0xfd, 0xfe, 0xf8, 0xf7, 0xfa, 0xfb, 0xf1, 0xfa, 0xf3, 0xf4, 0xff, + 0xfd, 0xf4, 0xf1, 0xf2, 0xf5, 0xfb, 0xf8, 0xf6, 0xfc, 0xf7, 0xf6, 0xfc, + 0xf9, 0xf0, 0xf3, 0xf5, 0xf2, 0xfe, 0xff, 0xf9, 0x2f, 0x23, 0x21, 0x2d, + 0x28, 0x24, 0x2e, 0x27, 0x26, 0x2f, 0x2b, 0x22, 0x23, 0x28, 0x24, 0x2e, + 0x29, 0x2c, 0x27, 0x20, 0x22, 0x21, 0x2d, 0x2a, 0x2c, 0x26, 0x20, 0x29, + 0x25, 0x2b, 0x2a, 0x25, 0x20, 0x2d, 0x2e, 0x28, 0x27, 0x2a, 0x2b, 0x21, + 0x2a, 0x23, 0x24, 0x2f, 0x2d, 0x24, 0x21, 0x22, 0x25, 0x2b, 0x28, 0x26, + 0x2c, 0x27, 0x26, 0x2c, 0x29, 0x20, 0x23, 0x25, 0x22, 0x2e, 0x2f, 0x29, + 0xbf, 0xb3, 0xb1, 0xbd, 0xb8, 0xb4, 0xbe, 0xb7, 0xb6, 0xbf, 0xbb, 0xb2, + 0xb3, 0xb8, 0xb4, 0xbe, 0xb9, 0xbc, 0xb7, 0xb0, 0xb2, 0xb1, 0xbd, 0xba, + 0xbc, 0xb6, 0xb0, 0xb9, 0xb5, 0xbb, 0xba, 0xb5, 0xb0, 0xbd, 0xbe, 0xb8, + 0xb7, 0xba, 0xbb, 0xb1, 0xba, 0xb3, 0xb4, 0xbf, 0xbd, 0xb4, 0xb1, 0xb2, + 0xb5, 0xbb, 0xb8, 0xb6, 0xbc, 0xb7, 0xb6, 0xbc, 0xb9, 0xb0, 0xb3, 0xb5, + 0xb2, 0xbe, 0xbf, 0xb9, 0xdf, 0xd3, 0xd1, 0xdd, 0xd8, 0xd4, 0xde, 0xd7, + 0xd6, 0xdf, 0xdb, 0xd2, 0xd3, 0xd8, 0xd4, 0xde, 0xd9, 0xdc, 0xd7, 0xd0, + 0xd2, 0xd1, 0xdd, 0xda, 0xdc, 0xd6, 0xd0, 0xd9, 0xd5, 0xdb, 0xda, 0xd5, + 0xd0, 0xdd, 0xde, 0xd8, 0xd7, 0xda, 0xdb, 0xd1, 0xda, 0xd3, 0xd4, 0xdf, + 0xdd, 0xd4, 0xd1, 0xd2, 0xd5, 0xdb, 0xd8, 0xd6, 0xdc, 0xd7, 0xd6, 0xdc, + 0xd9, 0xd0, 0xd3, 0xd5, 0xd2, 0xde, 0xdf, 0xd9, 0x8f, 0x83, 0x81, 0x8d, + 0x88, 0x84, 0x8e, 0x87, 0x86, 0x8f, 0x8b, 0x82, 0x83, 0x88, 0x84, 0x8e, + 0x89, 0x8c, 0x87, 0x80, 0x82, 0x81, 0x8d, 0x8a, 0x8c, 0x86, 0x80, 0x89, + 0x85, 0x8b, 0x8a, 0x85, 0x80, 0x8d, 0x8e, 0x88, 0x87, 0x8a, 0x8b, 0x81, + 0x8a, 0x83, 0x84, 0x8f, 0x8d, 0x84, 0x81, 0x82, 0x85, 0x8b, 0x88, 0x86, + 0x8c, 0x87, 0x86, 0x8c, 0x89, 0x80, 0x83, 0x85, 0x82, 0x8e, 0x8f, 0x89, + 0x1f, 0x13, 0x11, 0x1d, 0x18, 0x14, 0x1e, 0x17, 0x16, 0x1f, 0x1b, 0x12, + 0x13, 0x18, 0x14, 0x1e, 0x19, 0x1c, 0x17, 0x10, 0x12, 0x11, 0x1d, 0x1a, + 0x1c, 0x16, 0x10, 0x19, 0x15, 0x1b, 0x1a, 0x15, 0x10, 0x1d, 0x1e, 0x18, + 0x17, 0x1a, 0x1b, 0x11, 0x1a, 0x13, 0x14, 0x1f, 0x1d, 0x14, 0x11, 0x12, + 0x15, 0x1b, 0x18, 0x16, 0x1c, 0x17, 0x16, 0x1c, 0x19, 0x10, 0x13, 0x15, + 0x12, 0x1e, 0x1f, 0x19, 0x3f, 0x33, 0x31, 0x3d, 0x38, 0x34, 0x3e, 0x37, + 0x36, 0x3f, 0x3b, 0x32, 0x33, 0x38, 0x34, 0x3e, 0x39, 0x3c, 0x37, 0x30, + 0x32, 0x31, 0x3d, 0x3a, 0x3c, 0x36, 0x30, 0x39, 0x35, 0x3b, 0x3a, 0x35, + 0x30, 0x3d, 0x3e, 0x38, 0x37, 0x3a, 0x3b, 0x31, 0x3a, 0x33, 0x34, 0x3f, + 0x3d, 0x34, 0x31, 0x32, 0x35, 0x3b, 0x38, 0x36, 0x3c, 0x37, 0x36, 0x3c, + 0x39, 0x30, 0x33, 0x35, 0x32, 0x3e, 0x3f, 0x39, 0xaf, 0xa3, 0xa1, 0xad, + 0xa8, 0xa4, 0xae, 0xa7, 0xa6, 0xaf, 0xab, 0xa2, 0xa3, 0xa8, 0xa4, 0xae, + 0xa9, 0xac, 0xa7, 0xa0, 0xa2, 0xa1, 0xad, 0xaa, 0xac, 0xa6, 0xa0, 0xa9, + 0xa5, 0xab, 0xaa, 0xa5, 0xa0, 0xad, 0xae, 0xa8, 0xa7, 0xaa, 0xab, 0xa1, + 0xaa, 0xa3, 0xa4, 0xaf, 0xad, 0xa4, 0xa1, 0xa2, 0xa5, 0xab, 0xa8, 0xa6, + 0xac, 0xa7, 0xa6, 0xac, 0xa9, 0xa0, 0xa3, 0xa5, 0xa2, 0xae, 0xaf, 0xa9, + 0xaf, 0xa3, 0xa1, 0xad, 0xa8, 0xa4, 0xae, 0xa7, 0xa6, 0xaf, 0xab, 0xa2, + 0xa3, 0xa8, 0xa4, 0xae, 0xa9, 0xac, 0xa7, 0xa0, 0xa2, 0xa1, 0xad, 0xaa, + 0xac, 0xa6, 0xa0, 0xa9, 0xa5, 0xab, 0xaa, 0xa5, 0xa0, 0xad, 0xae, 0xa8, + 0xa7, 0xaa, 0xab, 0xa1, 0xaa, 0xa3, 0xa4, 0xaf, 0xad, 0xa4, 0xa1, 0xa2, + 0xa5, 0xab, 0xa8, 0xa6, 0xac, 0xa7, 0xa6, 0xac, 0xa9, 0xa0, 0xa3, 0xa5, + 0xa2, 0xae, 0xaf, 0xa9, 0x6f, 0x63, 0x61, 0x6d, 0x68, 0x64, 0x6e, 0x67, + 0x66, 0x6f, 0x6b, 0x62, 0x63, 0x68, 0x64, 0x6e, 0x69, 0x6c, 0x67, 0x60, + 0x62, 0x61, 0x6d, 0x6a, 0x6c, 0x66, 0x60, 0x69, 0x65, 0x6b, 0x6a, 0x65, + 0x60, 0x6d, 0x6e, 0x68, 0x67, 0x6a, 0x6b, 0x61, 0x6a, 0x63, 0x64, 0x6f, + 0x6d, 0x64, 0x61, 0x62, 0x65, 0x6b, 0x68, 0x66, 0x6c, 0x67, 0x66, 0x6c, + 0x69, 0x60, 0x63, 0x65, 0x62, 0x6e, 0x6f, 0x69, 0x6f, 0x63, 0x61, 0x6d, + 0x68, 0x64, 0x6e, 0x67, 0x66, 0x6f, 0x6b, 0x62, 0x63, 0x68, 0x64, 0x6e, + 0x69, 0x6c, 0x67, 0x60, 0x62, 0x61, 0x6d, 0x6a, 0x6c, 0x66, 0x60, 0x69, + 0x65, 0x6b, 0x6a, 0x65, 0x60, 0x6d, 0x6e, 0x68, 0x67, 0x6a, 0x6b, 0x61, + 0x6a, 0x63, 0x64, 0x6f, 0x6d, 0x64, 0x61, 0x62, 0x65, 0x6b, 0x68, 0x66, + 0x6c, 0x67, 0x66, 0x6c, 0x69, 0x60, 0x63, 0x65, 0x62, 0x6e, 0x6f, 0x69, + 0xcf, 0xc3, 0xc1, 0xcd, 0xc8, 0xc4, 0xce, 0xc7, 0xc6, 0xcf, 0xcb, 0xc2, + 0xc3, 0xc8, 0xc4, 0xce, 0xc9, 0xcc, 0xc7, 0xc0, 0xc2, 0xc1, 0xcd, 0xca, + 0xcc, 0xc6, 0xc0, 0xc9, 0xc5, 0xcb, 0xca, 0xc5, 0xc0, 0xcd, 0xce, 0xc8, + 0xc7, 0xca, 0xcb, 0xc1, 0xca, 0xc3, 0xc4, 0xcf, 0xcd, 0xc4, 0xc1, 0xc2, + 0xc5, 0xcb, 0xc8, 0xc6, 0xcc, 0xc7, 0xc6, 0xcc, 0xc9, 0xc0, 0xc3, 0xc5, + 0xc2, 0xce, 0xcf, 0xc9, 0xcf, 0xc3, 0xc1, 0xcd, 0xc8, 0xc4, 0xce, 0xc7, + 0xc6, 0xcf, 0xcb, 0xc2, 0xc3, 0xc8, 0xc4, 0xce, 0xc9, 0xcc, 0xc7, 0xc0, + 0xc2, 0xc1, 0xcd, 0xca, 0xcc, 0xc6, 0xc0, 0xc9, 0xc5, 0xcb, 0xca, 0xc5, + 0xc0, 0xcd, 0xce, 0xc8, 0xc7, 0xca, 0xcb, 0xc1, 0xca, 0xc3, 0xc4, 0xcf, + 0xcd, 0xc4, 0xc1, 0xc2, 0xc5, 0xcb, 0xc8, 0xc6, 0xcc, 0xc7, 0xc6, 0xcc, + 0xc9, 0xc0, 0xc3, 0xc5, 0xc2, 0xce, 0xcf, 0xc9, 0xbf, 0xb3, 0xb1, 0xbd, + 0xb8, 0xb4, 0xbe, 0xb7, 0xb6, 0xbf, 0xbb, 0xb2, 0xb3, 0xb8, 0xb4, 0xbe, + 0xb9, 0xbc, 0xb7, 0xb0, 0xb2, 0xb1, 0xbd, 0xba, 0xbc, 0xb6, 0xb0, 0xb9, + 0xb5, 0xbb, 0xba, 0xb5, 0xb0, 0xbd, 0xbe, 0xb8, 0xb7, 0xba, 0xbb, 0xb1, + 0xba, 0xb3, 0xb4, 0xbf, 0xbd, 0xb4, 0xb1, 0xb2, 0xb5, 0xbb, 0xb8, 0xb6, + 0xbc, 0xb7, 0xb6, 0xbc, 0xb9, 0xb0, 0xb3, 0xb5, 0xb2, 0xbe, 0xbf, 0xb9, + 0x5f, 0x53, 0x51, 0x5d, 0x58, 0x54, 0x5e, 0x57, 0x56, 0x5f, 0x5b, 0x52, + 0x53, 0x58, 0x54, 0x5e, 0x59, 0x5c, 0x57, 0x50, 0x52, 0x51, 0x5d, 0x5a, + 0x5c, 0x56, 0x50, 0x59, 0x55, 0x5b, 0x5a, 0x55, 0x50, 0x5d, 0x5e, 0x58, + 0x57, 0x5a, 0x5b, 0x51, 0x5a, 0x53, 0x54, 0x5f, 0x5d, 0x54, 0x51, 0x52, + 0x55, 0x5b, 0x58, 0x56, 0x5c, 0x57, 0x56, 0x5c, 0x59, 0x50, 0x53, 0x55, + 0x52, 0x5e, 0x5f, 0x59, 0x9f, 0x93, 0x91, 0x9d, 0x98, 0x94, 0x9e, 0x97, + 0x96, 0x9f, 0x9b, 0x92, 0x93, 0x98, 0x94, 0x9e, 0x99, 0x9c, 0x97, 0x90, + 0x92, 0x91, 0x9d, 0x9a, 0x9c, 0x96, 0x90, 0x99, 0x95, 0x9b, 0x9a, 0x95, + 0x90, 0x9d, 0x9e, 0x98, 0x97, 0x9a, 0x9b, 0x91, 0x9a, 0x93, 0x94, 0x9f, + 0x9d, 0x94, 0x91, 0x92, 0x95, 0x9b, 0x98, 0x96, 0x9c, 0x97, 0x96, 0x9c, + 0x99, 0x90, 0x93, 0x95, 0x92, 0x9e, 0x9f, 0x99, 0x9f, 0x93, 0x91, 0x9d, + 0x98, 0x94, 0x9e, 0x97, 0x96, 0x9f, 0x9b, 0x92, 0x93, 0x98, 0x94, 0x9e, + 0x99, 0x9c, 0x97, 0x90, 0x92, 0x91, 0x9d, 0x9a, 0x9c, 0x96, 0x90, 0x99, + 0x95, 0x9b, 0x9a, 0x95, 0x90, 0x9d, 0x9e, 0x98, 0x97, 0x9a, 0x9b, 0x91, + 0x9a, 0x93, 0x94, 0x9f, 0x9d, 0x94, 0x91, 0x92, 0x95, 0x9b, 0x98, 0x96, + 0x9c, 0x97, 0x96, 0x9c, 0x99, 0x90, 0x93, 0x95, 0x92, 0x9e, 0x9f, 0x99, + 0x5f, 0x53, 0x51, 0x5d, 0x58, 0x54, 0x5e, 0x57, 0x56, 0x5f, 0x5b, 0x52, + 0x53, 0x58, 0x54, 0x5e, 0x59, 0x5c, 0x57, 0x50, 0x52, 0x51, 0x5d, 0x5a, + 0x5c, 0x56, 0x50, 0x59, 0x55, 0x5b, 0x5a, 0x55, 0x50, 0x5d, 0x5e, 0x58, + 0x57, 0x5a, 0x5b, 0x51, 0x5a, 0x53, 0x54, 0x5f, 0x5d, 0x54, 0x51, 0x52, + 0x55, 0x5b, 0x58, 0x56, 0x5c, 0x57, 0x56, 0x5c, 0x59, 0x50, 0x53, 0x55, + 0x52, 0x5e, 0x5f, 0x59, 0x0f, 0x03, 0x01, 0x0d, 0x08, 0x04, 0x0e, 0x07, + 0x06, 0x0f, 0x0b, 0x02, 0x03, 0x08, 0x04, 0x0e, 0x09, 0x0c, 0x07, 0x00, + 0x02, 0x01, 0x0d, 0x0a, 0x0c, 0x06, 0x00, 0x09, 0x05, 0x0b, 0x0a, 0x05, + 0x00, 0x0d, 0x0e, 0x08, 0x07, 0x0a, 0x0b, 0x01, 0x0a, 0x03, 0x04, 0x0f, + 0x0d, 0x04, 0x01, 0x02, 0x05, 0x0b, 0x08, 0x06, 0x0c, 0x07, 0x06, 0x0c, + 0x09, 0x00, 0x03, 0x05, 0x02, 0x0e, 0x0f, 0x09, 0x3f, 0x33, 0x31, 0x3d, + 0x38, 0x34, 0x3e, 0x37, 0x36, 0x3f, 0x3b, 0x32, 0x33, 0x38, 0x34, 0x3e, + 0x39, 0x3c, 0x37, 0x30, 0x32, 0x31, 0x3d, 0x3a, 0x3c, 0x36, 0x30, 0x39, + 0x35, 0x3b, 0x3a, 0x35, 0x30, 0x3d, 0x3e, 0x38, 0x37, 0x3a, 0x3b, 0x31, + 0x3a, 0x33, 0x34, 0x3f, 0x3d, 0x34, 0x31, 0x32, 0x35, 0x3b, 0x38, 0x36, + 0x3c, 0x37, 0x36, 0x3c, 0x39, 0x30, 0x33, 0x35, 0x32, 0x3e, 0x3f, 0x39, + 0x7f, 0x73, 0x71, 0x7d, 0x78, 0x74, 0x7e, 0x77, 0x76, 0x7f, 0x7b, 0x72, + 0x73, 0x78, 0x74, 0x7e, 0x79, 0x7c, 0x77, 0x70, 0x72, 0x71, 0x7d, 0x7a, + 0x7c, 0x76, 0x70, 0x79, 0x75, 0x7b, 0x7a, 0x75, 0x70, 0x7d, 0x7e, 0x78, + 0x77, 0x7a, 0x7b, 0x71, 0x7a, 0x73, 0x74, 0x7f, 0x7d, 0x74, 0x71, 0x72, + 0x75, 0x7b, 0x78, 0x76, 0x7c, 0x77, 0x76, 0x7c, 0x79, 0x70, 0x73, 0x75, + 0x72, 0x7e, 0x7f, 0x79, 0x8f, 0x83, 0x81, 0x8d, 0x88, 0x84, 0x8e, 0x87, + 0x86, 0x8f, 0x8b, 0x82, 0x83, 0x88, 0x84, 0x8e, 0x89, 0x8c, 0x87, 0x80, + 0x82, 0x81, 0x8d, 0x8a, 0x8c, 0x86, 0x80, 0x89, 0x85, 0x8b, 0x8a, 0x85, + 0x80, 0x8d, 0x8e, 0x88, 0x87, 0x8a, 0x8b, 0x81, 0x8a, 0x83, 0x84, 0x8f, + 0x8d, 0x84, 0x81, 0x82, 0x85, 0x8b, 0x88, 0x86, 0x8c, 0x87, 0x86, 0x8c, + 0x89, 0x80, 0x83, 0x85, 0x82, 0x8e, 0x8f, 0x89, 0x4f, 0x43, 0x41, 0x4d, + 0x48, 0x44, 0x4e, 0x47, 0x46, 0x4f, 0x4b, 0x42, 0x43, 0x48, 0x44, 0x4e, + 0x49, 0x4c, 0x47, 0x40, 0x42, 0x41, 0x4d, 0x4a, 0x4c, 0x46, 0x40, 0x49, + 0x45, 0x4b, 0x4a, 0x45, 0x40, 0x4d, 0x4e, 0x48, 0x47, 0x4a, 0x4b, 0x41, + 0x4a, 0x43, 0x44, 0x4f, 0x4d, 0x44, 0x41, 0x42, 0x45, 0x4b, 0x48, 0x46, + 0x4c, 0x47, 0x46, 0x4c, 0x49, 0x40, 0x43, 0x45, 0x42, 0x4e, 0x4f, 0x49, + 0xff, 0xf3, 0xf1, 0xfd, 0xf8, 0xf4, 0xfe, 0xf7, 0xf6, 0xff, 0xfb, 0xf2, + 0xf3, 0xf8, 0xf4, 0xfe, 0xf9, 0xfc, 0xf7, 0xf0, 0xf2, 0xf1, 0xfd, 0xfa, + 0xfc, 0xf6, 0xf0, 0xf9, 0xf5, 0xfb, 0xfa, 0xf5, 0xf0, 0xfd, 0xfe, 0xf8, + 0xf7, 0xfa, 0xfb, 0xf1, 0xfa, 0xf3, 0xf4, 0xff, 0xfd, 0xf4, 0xf1, 0xf2, + 0xf5, 0xfb, 0xf8, 0xf6, 0xfc, 0xf7, 0xf6, 0xfc, 0xf9, 0xf0, 0xf3, 0xf5, + 0xf2, 0xfe, 0xff, 0xf9, 0x1f, 0x13, 0x11, 0x1d, 0x18, 0x14, 0x1e, 0x17, + 0x16, 0x1f, 0x1b, 0x12, 0x13, 0x18, 0x14, 0x1e, 0x19, 0x1c, 0x17, 0x10, + 0x12, 0x11, 0x1d, 0x1a, 0x1c, 0x16, 0x10, 0x19, 0x15, 0x1b, 0x1a, 0x15, + 0x10, 0x1d, 0x1e, 0x18, 0x17, 0x1a, 0x1b, 0x11, 0x1a, 0x13, 0x14, 0x1f, + 0x1d, 0x14, 0x11, 0x12, 0x15, 0x1b, 0x18, 0x16, 0x1c, 0x17, 0x16, 0x1c, + 0x19, 0x10, 0x13, 0x15, 0x12, 0x1e, 0x1f, 0x19, 0xcf, 0xc3, 0xc1, 0xcd, + 0xc8, 0xc4, 0xce, 0xc7, 0xc6, 0xcf, 0xcb, 0xc2, 0xc3, 0xc8, 0xc4, 0xce, + 0xc9, 0xcc, 0xc7, 0xc0, 0xc2, 0xc1, 0xcd, 0xca, 0xcc, 0xc6, 0xc0, 0xc9, + 0xc5, 0xcb, 0xca, 0xc5, 0xc0, 0xcd, 0xce, 0xc8, 0xc7, 0xca, 0xcb, 0xc1, + 0xca, 0xc3, 0xc4, 0xcf, 0xcd, 0xc4, 0xc1, 0xc2, 0xc5, 0xcb, 0xc8, 0xc6, + 0xcc, 0xc7, 0xc6, 0xcc, 0xc9, 0xc0, 0xc3, 0xc5, 0xc2, 0xce, 0xcf, 0xc9, + 0xef, 0xe3, 0xe1, 0xed, 0xe8, 0xe4, 0xee, 0xe7, 0xe6, 0xef, 0xeb, 0xe2, + 0xe3, 0xe8, 0xe4, 0xee, 0xe9, 0xec, 0xe7, 0xe0, 0xe2, 0xe1, 0xed, 0xea, + 0xec, 0xe6, 0xe0, 0xe9, 0xe5, 0xeb, 0xea, 0xe5, 0xe0, 0xed, 0xee, 0xe8, + 0xe7, 0xea, 0xeb, 0xe1, 0xea, 0xe3, 0xe4, 0xef, 0xed, 0xe4, 0xe1, 0xe2, + 0xe5, 0xeb, 0xe8, 0xe6, 0xec, 0xe7, 0xe6, 0xec, 0xe9, 0xe0, 0xe3, 0xe5, + 0xe2, 0xee, 0xef, 0xe9, 0x8f, 0x83, 0x81, 0x8d, 0x88, 0x84, 0x8e, 0x87, + 0x86, 0x8f, 0x8b, 0x82, 0x83, 0x88, 0x84, 0x8e, 0x89, 0x8c, 0x87, 0x80, + 0x82, 0x81, 0x8d, 0x8a, 0x8c, 0x86, 0x80, 0x89, 0x85, 0x8b, 0x8a, 0x85, + 0x80, 0x8d, 0x8e, 0x88, 0x87, 0x8a, 0x8b, 0x81, 0x8a, 0x83, 0x84, 0x8f, + 0x8d, 0x84, 0x81, 0x82, 0x85, 0x8b, 0x88, 0x86, 0x8c, 0x87, 0x86, 0x8c, + 0x89, 0x80, 0x83, 0x85, 0x82, 0x8e, 0x8f, 0x89, 0x8f, 0x83, 0x81, 0x8d, + 0x88, 0x84, 0x8e, 0x87, 0x86, 0x8f, 0x8b, 0x82, 0x83, 0x88, 0x84, 0x8e, + 0x89, 0x8c, 0x87, 0x80, 0x82, 0x81, 0x8d, 0x8a, 0x8c, 0x86, 0x80, 0x89, + 0x85, 0x8b, 0x8a, 0x85, 0x80, 0x8d, 0x8e, 0x88, 0x87, 0x8a, 0x8b, 0x81, + 0x8a, 0x83, 0x84, 0x8f, 0x8d, 0x84, 0x81, 0x82, 0x85, 0x8b, 0x88, 0x86, + 0x8c, 0x87, 0x86, 0x8c, 0x89, 0x80, 0x83, 0x85, 0x82, 0x8e, 0x8f, 0x89, + 0x2f, 0x23, 0x21, 0x2d, 0x28, 0x24, 0x2e, 0x27, 0x26, 0x2f, 0x2b, 0x22, + 0x23, 0x28, 0x24, 0x2e, 0x29, 0x2c, 0x27, 0x20, 0x22, 0x21, 0x2d, 0x2a, + 0x2c, 0x26, 0x20, 0x29, 0x25, 0x2b, 0x2a, 0x25, 0x20, 0x2d, 0x2e, 0x28, + 0x27, 0x2a, 0x2b, 0x21, 0x2a, 0x23, 0x24, 0x2f, 0x2d, 0x24, 0x21, 0x22, + 0x25, 0x2b, 0x28, 0x26, 0x2c, 0x27, 0x26, 0x2c, 0x29, 0x20, 0x23, 0x25, + 0x22, 0x2e, 0x2f, 0x29, 0xdf, 0xd3, 0xd1, 0xdd, 0xd8, 0xd4, 0xde, 0xd7, + 0xd6, 0xdf, 0xdb, 0xd2, 0xd3, 0xd8, 0xd4, 0xde, 0xd9, 0xdc, 0xd7, 0xd0, + 0xd2, 0xd1, 0xdd, 0xda, 0xdc, 0xd6, 0xd0, 0xd9, 0xd5, 0xdb, 0xda, 0xd5, + 0xd0, 0xdd, 0xde, 0xd8, 0xd7, 0xda, 0xdb, 0xd1, 0xda, 0xd3, 0xd4, 0xdf, + 0xdd, 0xd4, 0xd1, 0xd2, 0xd5, 0xdb, 0xd8, 0xd6, 0xdc, 0xd7, 0xd6, 0xdc, + 0xd9, 0xd0, 0xd3, 0xd5, 0xd2, 0xde, 0xdf, 0xd9, 0x4f, 0x43, 0x41, 0x4d, + 0x48, 0x44, 0x4e, 0x47, 0x46, 0x4f, 0x4b, 0x42, 0x43, 0x48, 0x44, 0x4e, + 0x49, 0x4c, 0x47, 0x40, 0x42, 0x41, 0x4d, 0x4a, 0x4c, 0x46, 0x40, 0x49, + 0x45, 0x4b, 0x4a, 0x45, 0x40, 0x4d, 0x4e, 0x48, 0x47, 0x4a, 0x4b, 0x41, + 0x4a, 0x43, 0x44, 0x4f, 0x4d, 0x44, 0x41, 0x42, 0x45, 0x4b, 0x48, 0x46, + 0x4c, 0x47, 0x46, 0x4c, 0x49, 0x40, 0x43, 0x45, 0x42, 0x4e, 0x4f, 0x49, + 0x6f, 0x63, 0x61, 0x6d, 0x68, 0x64, 0x6e, 0x67, 0x66, 0x6f, 0x6b, 0x62, + 0x63, 0x68, 0x64, 0x6e, 0x69, 0x6c, 0x67, 0x60, 0x62, 0x61, 0x6d, 0x6a, + 0x6c, 0x66, 0x60, 0x69, 0x65, 0x6b, 0x6a, 0x65, 0x60, 0x6d, 0x6e, 0x68, + 0x67, 0x6a, 0x6b, 0x61, 0x6a, 0x63, 0x64, 0x6f, 0x6d, 0x64, 0x61, 0x62, + 0x65, 0x6b, 0x68, 0x66, 0x6c, 0x67, 0x66, 0x6c, 0x69, 0x60, 0x63, 0x65, + 0x62, 0x6e, 0x6f, 0x69, 0x9f, 0x93, 0x91, 0x9d, 0x98, 0x94, 0x9e, 0x97, + 0x96, 0x9f, 0x9b, 0x92, 0x93, 0x98, 0x94, 0x9e, 0x99, 0x9c, 0x97, 0x90, + 0x92, 0x91, 0x9d, 0x9a, 0x9c, 0x96, 0x90, 0x99, 0x95, 0x9b, 0x9a, 0x95, + 0x90, 0x9d, 0x9e, 0x98, 0x97, 0x9a, 0x9b, 0x91, 0x9a, 0x93, 0x94, 0x9f, + 0x9d, 0x94, 0x91, 0x92, 0x95, 0x9b, 0x98, 0x96, 0x9c, 0x97, 0x96, 0x9c, + 0x99, 0x90, 0x93, 0x95, 0x92, 0x9e, 0x9f, 0x99, 0x2f, 0x23, 0x21, 0x2d, + 0x28, 0x24, 0x2e, 0x27, 0x26, 0x2f, 0x2b, 0x22, 0x23, 0x28, 0x24, 0x2e, + 0x29, 0x2c, 0x27, 0x20, 0x22, 0x21, 0x2d, 0x2a, 0x2c, 0x26, 0x20, 0x29, + 0x25, 0x2b, 0x2a, 0x25, 0x20, 0x2d, 0x2e, 0x28, 0x27, 0x2a, 0x2b, 0x21, + 0x2a, 0x23, 0x24, 0x2f, 0x2d, 0x24, 0x21, 0x22, 0x25, 0x2b, 0x28, 0x26, + 0x2c, 0x27, 0x26, 0x2c, 0x29, 0x20, 0x23, 0x25, 0x22, 0x2e, 0x2f, 0x29, + 0x1f, 0x13, 0x11, 0x1d, 0x18, 0x14, 0x1e, 0x17, 0x16, 0x1f, 0x1b, 0x12, + 0x13, 0x18, 0x14, 0x1e, 0x19, 0x1c, 0x17, 0x10, 0x12, 0x11, 0x1d, 0x1a, + 0x1c, 0x16, 0x10, 0x19, 0x15, 0x1b, 0x1a, 0x15, 0x10, 0x1d, 0x1e, 0x18, + 0x17, 0x1a, 0x1b, 0x11, 0x1a, 0x13, 0x14, 0x1f, 0x1d, 0x14, 0x11, 0x12, + 0x15, 0x1b, 0x18, 0x16, 0x1c, 0x17, 0x16, 0x1c, 0x19, 0x10, 0x13, 0x15, + 0x12, 0x1e, 0x1f, 0x19, 0xbf, 0xb3, 0xb1, 0xbd, 0xb8, 0xb4, 0xbe, 0xb7, + 0xb6, 0xbf, 0xbb, 0xb2, 0xb3, 0xb8, 0xb4, 0xbe, 0xb9, 0xbc, 0xb7, 0xb0, + 0xb2, 0xb1, 0xbd, 0xba, 0xbc, 0xb6, 0xb0, 0xb9, 0xb5, 0xbb, 0xba, 0xb5, + 0xb0, 0xbd, 0xbe, 0xb8, 0xb7, 0xba, 0xbb, 0xb1, 0xba, 0xb3, 0xb4, 0xbf, + 0xbd, 0xb4, 0xb1, 0xb2, 0xb5, 0xbb, 0xb8, 0xb6, 0xbc, 0xb7, 0xb6, 0xbc, + 0xb9, 0xb0, 0xb3, 0xb5, 0xb2, 0xbe, 0xbf, 0xb9, 0x7f, 0x73, 0x71, 0x7d, + 0x78, 0x74, 0x7e, 0x77, 0x76, 0x7f, 0x7b, 0x72, 0x73, 0x78, 0x74, 0x7e, + 0x79, 0x7c, 0x77, 0x70, 0x72, 0x71, 0x7d, 0x7a, 0x7c, 0x76, 0x70, 0x79, + 0x75, 0x7b, 0x7a, 0x75, 0x70, 0x7d, 0x7e, 0x78, 0x77, 0x7a, 0x7b, 0x71, + 0x7a, 0x73, 0x74, 0x7f, 0x7d, 0x74, 0x71, 0x72, 0x75, 0x7b, 0x78, 0x76, + 0x7c, 0x77, 0x76, 0x7c, 0x79, 0x70, 0x73, 0x75, 0x72, 0x7e, 0x7f, 0x79, + 0xff, 0xf3, 0xf1, 0xfd, 0xf8, 0xf4, 0xfe, 0xf7, 0xf6, 0xff, 0xfb, 0xf2, + 0xf3, 0xf8, 0xf4, 0xfe, 0xf9, 0xfc, 0xf7, 0xf0, 0xf2, 0xf1, 0xfd, 0xfa, + 0xfc, 0xf6, 0xf0, 0xf9, 0xf5, 0xfb, 0xfa, 0xf5, 0xf0, 0xfd, 0xfe, 0xf8, + 0xf7, 0xfa, 0xfb, 0xf1, 0xfa, 0xf3, 0xf4, 0xff, 0xfd, 0xf4, 0xf1, 0xf2, + 0xf5, 0xfb, 0xf8, 0xf6, 0xfc, 0xf7, 0xf6, 0xfc, 0xf9, 0xf0, 0xf3, 0xf5, + 0xf2, 0xfe, 0xff, 0xf9, 0x5f, 0x53, 0x51, 0x5d, 0x58, 0x54, 0x5e, 0x57, + 0x56, 0x5f, 0x5b, 0x52, 0x53, 0x58, 0x54, 0x5e, 0x59, 0x5c, 0x57, 0x50, + 0x52, 0x51, 0x5d, 0x5a, 0x5c, 0x56, 0x50, 0x59, 0x55, 0x5b, 0x5a, 0x55, + 0x50, 0x5d, 0x5e, 0x58, 0x57, 0x5a, 0x5b, 0x51, 0x5a, 0x53, 0x54, 0x5f, + 0x5d, 0x54, 0x51, 0x52, 0x55, 0x5b, 0x58, 0x56, 0x5c, 0x57, 0x56, 0x5c, + 0x59, 0x50, 0x53, 0x55, 0x52, 0x5e, 0x5f, 0x59, 0xcf, 0xc3, 0xc1, 0xcd, + 0xc8, 0xc4, 0xce, 0xc7, 0xc6, 0xcf, 0xcb, 0xc2, 0xc3, 0xc8, 0xc4, 0xce, + 0xc9, 0xcc, 0xc7, 0xc0, 0xc2, 0xc1, 0xcd, 0xca, 0xcc, 0xc6, 0xc0, 0xc9, + 0xc5, 0xcb, 0xca, 0xc5, 0xc0, 0xcd, 0xce, 0xc8, 0xc7, 0xca, 0xcb, 0xc1, + 0xca, 0xc3, 0xc4, 0xcf, 0xcd, 0xc4, 0xc1, 0xc2, 0xc5, 0xcb, 0xc8, 0xc6, + 0xcc, 0xc7, 0xc6, 0xcc, 0xc9, 0xc0, 0xc3, 0xc5, 0xc2, 0xce, 0xcf, 0xc9, + 0xbf, 0xb3, 0xb1, 0xbd, 0xb8, 0xb4, 0xbe, 0xb7, 0xb6, 0xbf, 0xbb, 0xb2, + 0xb3, 0xb8, 0xb4, 0xbe, 0xb9, 0xbc, 0xb7, 0xb0, 0xb2, 0xb1, 0xbd, 0xba, + 0xbc, 0xb6, 0xb0, 0xb9, 0xb5, 0xbb, 0xba, 0xb5, 0xb0, 0xbd, 0xbe, 0xb8, + 0xb7, 0xba, 0xbb, 0xb1, 0xba, 0xb3, 0xb4, 0xbf, 0xbd, 0xb4, 0xb1, 0xb2, + 0xb5, 0xbb, 0xb8, 0xb6, 0xbc, 0xb7, 0xb6, 0xbc, 0xb9, 0xb0, 0xb3, 0xb5, + 0xb2, 0xbe, 0xbf, 0xb9, 0x9f, 0x93, 0x91, 0x9d, 0x98, 0x94, 0x9e, 0x97, + 0x96, 0x9f, 0x9b, 0x92, 0x93, 0x98, 0x94, 0x9e, 0x99, 0x9c, 0x97, 0x90, + 0x92, 0x91, 0x9d, 0x9a, 0x9c, 0x96, 0x90, 0x99, 0x95, 0x9b, 0x9a, 0x95, + 0x90, 0x9d, 0x9e, 0x98, 0x97, 0x9a, 0x9b, 0x91, 0x9a, 0x93, 0x94, 0x9f, + 0x9d, 0x94, 0x91, 0x92, 0x95, 0x9b, 0x98, 0x96, 0x9c, 0x97, 0x96, 0x9c, + 0x99, 0x90, 0x93, 0x95, 0x92, 0x9e, 0x9f, 0x99, 0x3f, 0x33, 0x31, 0x3d, + 0x38, 0x34, 0x3e, 0x37, 0x36, 0x3f, 0x3b, 0x32, 0x33, 0x38, 0x34, 0x3e, + 0x39, 0x3c, 0x37, 0x30, 0x32, 0x31, 0x3d, 0x3a, 0x3c, 0x36, 0x30, 0x39, + 0x35, 0x3b, 0x3a, 0x35, 0x30, 0x3d, 0x3e, 0x38, 0x37, 0x3a, 0x3b, 0x31, + 0x3a, 0x33, 0x34, 0x3f, 0x3d, 0x34, 0x31, 0x32, 0x35, 0x3b, 0x38, 0x36, + 0x3c, 0x37, 0x36, 0x3c, 0x39, 0x30, 0x33, 0x35, 0x32, 0x3e, 0x3f, 0x39, + 0x7f, 0x73, 0x71, 0x7d, 0x78, 0x74, 0x7e, 0x77, 0x76, 0x7f, 0x7b, 0x72, + 0x73, 0x78, 0x74, 0x7e, 0x79, 0x7c, 0x77, 0x70, 0x72, 0x71, 0x7d, 0x7a, + 0x7c, 0x76, 0x70, 0x79, 0x75, 0x7b, 0x7a, 0x75, 0x70, 0x7d, 0x7e, 0x78, + 0x77, 0x7a, 0x7b, 0x71, 0x7a, 0x73, 0x74, 0x7f, 0x7d, 0x74, 0x71, 0x72, + 0x75, 0x7b, 0x78, 0x76, 0x7c, 0x77, 0x76, 0x7c, 0x79, 0x70, 0x73, 0x75, + 0x72, 0x7e, 0x7f, 0x79, 0xef, 0xe3, 0xe1, 0xed, 0xe8, 0xe4, 0xee, 0xe7, + 0xe6, 0xef, 0xeb, 0xe2, 0xe3, 0xe8, 0xe4, 0xee, 0xe9, 0xec, 0xe7, 0xe0, + 0xe2, 0xe1, 0xed, 0xea, 0xec, 0xe6, 0xe0, 0xe9, 0xe5, 0xeb, 0xea, 0xe5, + 0xe0, 0xed, 0xee, 0xe8, 0xe7, 0xea, 0xeb, 0xe1, 0xea, 0xe3, 0xe4, 0xef, + 0xed, 0xe4, 0xe1, 0xe2, 0xe5, 0xeb, 0xe8, 0xe6, 0xec, 0xe7, 0xe6, 0xec, + 0xe9, 0xe0, 0xe3, 0xe5, 0xe2, 0xee, 0xef, 0xe9, 0x3f, 0x33, 0x31, 0x3d, + 0x38, 0x34, 0x3e, 0x37, 0x36, 0x3f, 0x3b, 0x32, 0x33, 0x38, 0x34, 0x3e, + 0x39, 0x3c, 0x37, 0x30, 0x32, 0x31, 0x3d, 0x3a, 0x3c, 0x36, 0x30, 0x39, + 0x35, 0x3b, 0x3a, 0x35, 0x30, 0x3d, 0x3e, 0x38, 0x37, 0x3a, 0x3b, 0x31, + 0x3a, 0x33, 0x34, 0x3f, 0x3d, 0x34, 0x31, 0x32, 0x35, 0x3b, 0x38, 0x36, + 0x3c, 0x37, 0x36, 0x3c, 0x39, 0x30, 0x33, 0x35, 0x32, 0x3e, 0x3f, 0x39, + 0xaf, 0xa3, 0xa1, 0xad, 0xa8, 0xa4, 0xae, 0xa7, 0xa6, 0xaf, 0xab, 0xa2, + 0xa3, 0xa8, 0xa4, 0xae, 0xa9, 0xac, 0xa7, 0xa0, 0xa2, 0xa1, 0xad, 0xaa, + 0xac, 0xa6, 0xa0, 0xa9, 0xa5, 0xab, 0xaa, 0xa5, 0xa0, 0xad, 0xae, 0xa8, + 0xa7, 0xaa, 0xab, 0xa1, 0xaa, 0xa3, 0xa4, 0xaf, 0xad, 0xa4, 0xa1, 0xa2, + 0xa5, 0xab, 0xa8, 0xa6, 0xac, 0xa7, 0xa6, 0xac, 0xa9, 0xa0, 0xa3, 0xa5, + 0xa2, 0xae, 0xaf, 0xa9, 0xaf, 0xa3, 0xa1, 0xad, 0xa8, 0xa4, 0xae, 0xa7, + 0xa6, 0xaf, 0xab, 0xa2, 0xa3, 0xa8, 0xa4, 0xae, 0xa9, 0xac, 0xa7, 0xa0, + 0xa2, 0xa1, 0xad, 0xaa, 0xac, 0xa6, 0xa0, 0xa9, 0xa5, 0xab, 0xaa, 0xa5, + 0xa0, 0xad, 0xae, 0xa8, 0xa7, 0xaa, 0xab, 0xa1, 0xaa, 0xa3, 0xa4, 0xaf, + 0xad, 0xa4, 0xa1, 0xa2, 0xa5, 0xab, 0xa8, 0xa6, 0xac, 0xa7, 0xa6, 0xac, + 0xa9, 0xa0, 0xa3, 0xa5, 0xa2, 0xae, 0xaf, 0xa9, 0x0f, 0x03, 0x01, 0x0d, + 0x08, 0x04, 0x0e, 0x07, 0x06, 0x0f, 0x0b, 0x02, 0x03, 0x08, 0x04, 0x0e, + 0x09, 0x0c, 0x07, 0x00, 0x02, 0x01, 0x0d, 0x0a, 0x0c, 0x06, 0x00, 0x09, + 0x05, 0x0b, 0x0a, 0x05, 0x00, 0x0d, 0x0e, 0x08, 0x07, 0x0a, 0x0b, 0x01, + 0x0a, 0x03, 0x04, 0x0f, 0x0d, 0x04, 0x01, 0x02, 0x05, 0x0b, 0x08, 0x06, + 0x0c, 0x07, 0x06, 0x0c, 0x09, 0x00, 0x03, 0x05, 0x02, 0x0e, 0x0f, 0x09, + 0x5f, 0x53, 0x51, 0x5d, 0x58, 0x54, 0x5e, 0x57, 0x56, 0x5f, 0x5b, 0x52, + 0x53, 0x58, 0x54, 0x5e, 0x59, 0x5c, 0x57, 0x50, 0x52, 0x51, 0x5d, 0x5a, + 0x5c, 0x56, 0x50, 0x59, 0x55, 0x5b, 0x5a, 0x55, 0x50, 0x5d, 0x5e, 0x58, + 0x57, 0x5a, 0x5b, 0x51, 0x5a, 0x53, 0x54, 0x5f, 0x5d, 0x54, 0x51, 0x52, + 0x55, 0x5b, 0x58, 0x56, 0x5c, 0x57, 0x56, 0x5c, 0x59, 0x50, 0x53, 0x55, + 0x52, 0x5e, 0x5f, 0x59, 0x6f, 0x63, 0x61, 0x6d, 0x68, 0x64, 0x6e, 0x67, + 0x66, 0x6f, 0x6b, 0x62, 0x63, 0x68, 0x64, 0x6e, 0x69, 0x6c, 0x67, 0x60, + 0x62, 0x61, 0x6d, 0x6a, 0x6c, 0x66, 0x60, 0x69, 0x65, 0x6b, 0x6a, 0x65, + 0x60, 0x6d, 0x6e, 0x68, 0x67, 0x6a, 0x6b, 0x61, 0x6a, 0x63, 0x64, 0x6f, + 0x6d, 0x64, 0x61, 0x62, 0x65, 0x6b, 0x68, 0x66, 0x6c, 0x67, 0x66, 0x6c, + 0x69, 0x60, 0x63, 0x65, 0x62, 0x6e, 0x6f, 0x69, 0x0f, 0x03, 0x01, 0x0d, + 0x08, 0x04, 0x0e, 0x07, 0x06, 0x0f, 0x0b, 0x02, 0x03, 0x08, 0x04, 0x0e, + 0x09, 0x0c, 0x07, 0x00, 0x02, 0x01, 0x0d, 0x0a, 0x0c, 0x06, 0x00, 0x09, + 0x05, 0x0b, 0x0a, 0x05, 0x00, 0x0d, 0x0e, 0x08, 0x07, 0x0a, 0x0b, 0x01, + 0x0a, 0x03, 0x04, 0x0f, 0x0d, 0x04, 0x01, 0x02, 0x05, 0x0b, 0x08, 0x06, + 0x0c, 0x07, 0x06, 0x0c, 0x09, 0x00, 0x03, 0x05, 0x02, 0x0e, 0x0f, 0x09, + 0xdf, 0xd3, 0xd1, 0xdd, 0xd8, 0xd4, 0xde, 0xd7, 0xd6, 0xdf, 0xdb, 0xd2, + 0xd3, 0xd8, 0xd4, 0xde, 0xd9, 0xdc, 0xd7, 0xd0, 0xd2, 0xd1, 0xdd, 0xda, + 0xdc, 0xd6, 0xd0, 0xd9, 0xd5, 0xdb, 0xda, 0xd5, 0xd0, 0xdd, 0xde, 0xd8, + 0xd7, 0xda, 0xdb, 0xd1, 0xda, 0xd3, 0xd4, 0xdf, 0xdd, 0xd4, 0xd1, 0xd2, + 0xd5, 0xdb, 0xd8, 0xd6, 0xdc, 0xd7, 0xd6, 0xdc, 0xd9, 0xd0, 0xd3, 0xd5, + 0xd2, 0xde, 0xdf, 0xd9, + }, + { + 0xa7, 0xad, 0xad, 0xa8, 0xae, 0xab, 0xa3, 0xa5, 0xa0, 0xa6, 0xa6, 0xaf, + 0xa9, 0xa0, 0xaa, 0xa3, 0xa1, 0xa4, 0xa2, 0xa7, 0xa8, 0xa2, 0xa5, 0xac, + 0xab, 0xa1, 0xac, 0xaa, 0xa4, 0xae, 0xaf, 0xa9, 0xaa, 0xa3, 0xa6, 0xaf, + 0xa9, 0xa0, 0xa0, 0xa6, 0xac, 0xaa, 0xab, 0xa1, 0xa7, 0xad, 0xad, 0xa8, + 0xaf, 0xa9, 0xa1, 0xa4, 0xa3, 0xa5, 0xae, 0xab, 0xa5, 0xac, 0xa2, 0xa7, + 0xa8, 0xa2, 0xa4, 0xae, 0xd7, 0xdd, 0xdd, 0xd8, 0xde, 0xdb, 0xd3, 0xd5, + 0xd0, 0xd6, 0xd6, 0xdf, 0xd9, 0xd0, 0xda, 0xd3, 0xd1, 0xd4, 0xd2, 0xd7, + 0xd8, 0xd2, 0xd5, 0xdc, 0xdb, 0xd1, 0xdc, 0xda, 0xd4, 0xde, 0xdf, 0xd9, + 0xda, 0xd3, 0xd6, 0xdf, 0xd9, 0xd0, 0xd0, 0xd6, 0xdc, 0xda, 0xdb, 0xd1, + 0xd7, 0xdd, 0xdd, 0xd8, 0xdf, 0xd9, 0xd1, 0xd4, 0xd3, 0xd5, 0xde, 0xdb, + 0xd5, 0xdc, 0xd2, 0xd7, 0xd8, 0xd2, 0xd4, 0xde, 0x07, 0x0d, 0x0d, 0x08, + 0x0e, 0x0b, 0x03, 0x05, 0x00, 0x06, 0x06, 0x0f, 0x09, 0x00, 0x0a, 0x03, + 0x01, 0x04, 0x02, 0x07, 0x08, 0x02, 0x05, 0x0c, 0x0b, 0x01, 0x0c, 0x0a, + 0x04, 0x0e, 0x0f, 0x09, 0x0a, 0x03, 0x06, 0x0f, 0x09, 0x00, 0x00, 0x06, + 0x0c, 0x0a, 0x0b, 0x01, 0x07, 0x0d, 0x0d, 0x08, 0x0f, 0x09, 0x01, 0x04, + 0x03, 0x05, 0x0e, 0x0b, 0x05, 0x0c, 0x02, 0x07, 0x08, 0x02, 0x04, 0x0e, + 0x77, 0x7d, 0x7d, 0x78, 0x7e, 0x7b, 0x73, 0x75, 0x70, 0x76, 0x76, 0x7f, + 0x79, 0x70, 0x7a, 0x73, 0x71, 0x74, 0x72, 0x77, 0x78, 0x72, 0x75, 0x7c, + 0x7b, 0x71, 0x7c, 0x7a, 0x74, 0x7e, 0x7f, 0x79, 0x7a, 0x73, 0x76, 0x7f, + 0x79, 0x70, 0x70, 0x76, 0x7c, 0x7a, 0x7b, 0x71, 0x77, 0x7d, 0x7d, 0x78, + 0x7f, 0x79, 0x71, 0x74, 0x73, 0x75, 0x7e, 0x7b, 0x75, 0x7c, 0x72, 0x77, + 0x78, 0x72, 0x74, 0x7e, 0x97, 0x9d, 0x9d, 0x98, 0x9e, 0x9b, 0x93, 0x95, + 0x90, 0x96, 0x96, 0x9f, 0x99, 0x90, 0x9a, 0x93, 0x91, 0x94, 0x92, 0x97, + 0x98, 0x92, 0x95, 0x9c, 0x9b, 0x91, 0x9c, 0x9a, 0x94, 0x9e, 0x9f, 0x99, + 0x9a, 0x93, 0x96, 0x9f, 0x99, 0x90, 0x90, 0x96, 0x9c, 0x9a, 0x9b, 0x91, + 0x97, 0x9d, 0x9d, 0x98, 0x9f, 0x99, 0x91, 0x94, 0x93, 0x95, 0x9e, 0x9b, + 0x95, 0x9c, 0x92, 0x97, 0x98, 0x92, 0x94, 0x9e, 0x07, 0x0d, 0x0d, 0x08, + 0x0e, 0x0b, 0x03, 0x05, 0x00, 0x06, 0x06, 0x0f, 0x09, 0x00, 0x0a, 0x03, + 0x01, 0x04, 0x02, 0x07, 0x08, 0x02, 0x05, 0x0c, 0x0b, 0x01, 0x0c, 0x0a, + 0x04, 0x0e, 0x0f, 0x09, 0x0a, 0x03, 0x06, 0x0f, 0x09, 0x00, 0x00, 0x06, + 0x0c, 0x0a, 0x0b, 0x01, 0x07, 0x0d, 0x0d, 0x08, 0x0f, 0x09, 0x01, 0x04, + 0x03, 0x05, 0x0e, 0x0b, 0x05, 0x0c, 0x02, 0x07, 0x08, 0x02, 0x04, 0x0e, + 0xe7, 0xed, 0xed, 0xe8, 0xee, 0xeb, 0xe3, 0xe5, 0xe0, 0xe6, 0xe6, 0xef, + 0xe9, 0xe0, 0xea, 0xe3, 0xe1, 0xe4, 0xe2, 0xe7, 0xe8, 0xe2, 0xe5, 0xec, + 0xeb, 0xe1, 0xec, 0xea, 0xe4, 0xee, 0xef, 0xe9, 0xea, 0xe3, 0xe6, 0xef, + 0xe9, 0xe0, 0xe0, 0xe6, 0xec, 0xea, 0xeb, 0xe1, 0xe7, 0xed, 0xed, 0xe8, + 0xef, 0xe9, 0xe1, 0xe4, 0xe3, 0xe5, 0xee, 0xeb, 0xe5, 0xec, 0xe2, 0xe7, + 0xe8, 0xe2, 0xe4, 0xee, 0x97, 0x9d, 0x9d, 0x98, 0x9e, 0x9b, 0x93, 0x95, + 0x90, 0x96, 0x96, 0x9f, 0x99, 0x90, 0x9a, 0x93, 0x91, 0x94, 0x92, 0x97, + 0x98, 0x92, 0x95, 0x9c, 0x9b, 0x91, 0x9c, 0x9a, 0x94, 0x9e, 0x9f, 0x99, + 0x9a, 0x93, 0x96, 0x9f, 0x99, 0x90, 0x90, 0x96, 0x9c, 0x9a, 0x9b, 0x91, + 0x97, 0x9d, 0x9d, 0x98, 0x9f, 0x99, 0x91, 0x94, 0x93, 0x95, 0x9e, 0x9b, + 0x95, 0x9c, 0x92, 0x97, 0x98, 0x92, 0x94, 0x9e, 0x67, 0x6d, 0x6d, 0x68, + 0x6e, 0x6b, 0x63, 0x65, 0x60, 0x66, 0x66, 0x6f, 0x69, 0x60, 0x6a, 0x63, + 0x61, 0x64, 0x62, 0x67, 0x68, 0x62, 0x65, 0x6c, 0x6b, 0x61, 0x6c, 0x6a, + 0x64, 0x6e, 0x6f, 0x69, 0x6a, 0x63, 0x66, 0x6f, 0x69, 0x60, 0x60, 0x66, + 0x6c, 0x6a, 0x6b, 0x61, 0x67, 0x6d, 0x6d, 0x68, 0x6f, 0x69, 0x61, 0x64, + 0x63, 0x65, 0x6e, 0x6b, 0x65, 0x6c, 0x62, 0x67, 0x68, 0x62, 0x64, 0x6e, + 0x37, 0x3d, 0x3d, 0x38, 0x3e, 0x3b, 0x33, 0x35, 0x30, 0x36, 0x36, 0x3f, + 0x39, 0x30, 0x3a, 0x33, 0x31, 0x34, 0x32, 0x37, 0x38, 0x32, 0x35, 0x3c, + 0x3b, 0x31, 0x3c, 0x3a, 0x34, 0x3e, 0x3f, 0x39, 0x3a, 0x33, 0x36, 0x3f, + 0x39, 0x30, 0x30, 0x36, 0x3c, 0x3a, 0x3b, 0x31, 0x37, 0x3d, 0x3d, 0x38, + 0x3f, 0x39, 0x31, 0x34, 0x33, 0x35, 0x3e, 0x3b, 0x35, 0x3c, 0x32, 0x37, + 0x38, 0x32, 0x34, 0x3e, 0x37, 0x3d, 0x3d, 0x38, 0x3e, 0x3b, 0x33, 0x35, + 0x30, 0x36, 0x36, 0x3f, 0x39, 0x30, 0x3a, 0x33, 0x31, 0x34, 0x32, 0x37, + 0x38, 0x32, 0x35, 0x3c, 0x3b, 0x31, 0x3c, 0x3a, 0x34, 0x3e, 0x3f, 0x39, + 0x3a, 0x33, 0x36, 0x3f, 0x39, 0x30, 0x30, 0x36, 0x3c, 0x3a, 0x3b, 0x31, + 0x37, 0x3d, 0x3d, 0x38, 0x3f, 0x39, 0x31, 0x34, 0x33, 0x35, 0x3e, 0x3b, + 0x35, 0x3c, 0x32, 0x37, 0x38, 0x32, 0x34, 0x3e, 0x47, 0x4d, 0x4d, 0x48, + 0x4e, 0x4b, 0x43, 0x45, 0x40, 0x46, 0x46, 0x4f, 0x49, 0x40, 0x4a, 0x43, + 0x41, 0x44, 0x42, 0x47, 0x48, 0x42, 0x45, 0x4c, 0x4b, 0x41, 0x4c, 0x4a, + 0x44, 0x4e, 0x4f, 0x49, 0x4a, 0x43, 0x46, 0x4f, 0x49, 0x40, 0x40, 0x46, + 0x4c, 0x4a, 0x4b, 0x41, 0x47, 0x4d, 0x4d, 0x48, 0x4f, 0x49, 0x41, 0x44, + 0x43, 0x45, 0x4e, 0x4b, 0x45, 0x4c, 0x42, 0x47, 0x48, 0x42, 0x44, 0x4e, + 0xf7, 0xfd, 0xfd, 0xf8, 0xfe, 0xfb, 0xf3, 0xf5, 0xf0, 0xf6, 0xf6, 0xff, + 0xf9, 0xf0, 0xfa, 0xf3, 0xf1, 0xf4, 0xf2, 0xf7, 0xf8, 0xf2, 0xf5, 0xfc, + 0xfb, 0xf1, 0xfc, 0xfa, 0xf4, 0xfe, 0xff, 0xf9, 0xfa, 0xf3, 0xf6, 0xff, + 0xf9, 0xf0, 0xf0, 0xf6, 0xfc, 0xfa, 0xfb, 0xf1, 0xf7, 0xfd, 0xfd, 0xf8, + 0xff, 0xf9, 0xf1, 0xf4, 0xf3, 0xf5, 0xfe, 0xfb, 0xf5, 0xfc, 0xf2, 0xf7, + 0xf8, 0xf2, 0xf4, 0xfe, 0x67, 0x6d, 0x6d, 0x68, 0x6e, 0x6b, 0x63, 0x65, + 0x60, 0x66, 0x66, 0x6f, 0x69, 0x60, 0x6a, 0x63, 0x61, 0x64, 0x62, 0x67, + 0x68, 0x62, 0x65, 0x6c, 0x6b, 0x61, 0x6c, 0x6a, 0x64, 0x6e, 0x6f, 0x69, + 0x6a, 0x63, 0x66, 0x6f, 0x69, 0x60, 0x60, 0x66, 0x6c, 0x6a, 0x6b, 0x61, + 0x67, 0x6d, 0x6d, 0x68, 0x6f, 0x69, 0x61, 0x64, 0x63, 0x65, 0x6e, 0x6b, + 0x65, 0x6c, 0x62, 0x67, 0x68, 0x62, 0x64, 0x6e, 0x57, 0x5d, 0x5d, 0x58, + 0x5e, 0x5b, 0x53, 0x55, 0x50, 0x56, 0x56, 0x5f, 0x59, 0x50, 0x5a, 0x53, + 0x51, 0x54, 0x52, 0x57, 0x58, 0x52, 0x55, 0x5c, 0x5b, 0x51, 0x5c, 0x5a, + 0x54, 0x5e, 0x5f, 0x59, 0x5a, 0x53, 0x56, 0x5f, 0x59, 0x50, 0x50, 0x56, + 0x5c, 0x5a, 0x5b, 0x51, 0x57, 0x5d, 0x5d, 0x58, 0x5f, 0x59, 0x51, 0x54, + 0x53, 0x55, 0x5e, 0x5b, 0x55, 0x5c, 0x52, 0x57, 0x58, 0x52, 0x54, 0x5e, + 0xa7, 0xad, 0xad, 0xa8, 0xae, 0xab, 0xa3, 0xa5, 0xa0, 0xa6, 0xa6, 0xaf, + 0xa9, 0xa0, 0xaa, 0xa3, 0xa1, 0xa4, 0xa2, 0xa7, 0xa8, 0xa2, 0xa5, 0xac, + 0xab, 0xa1, 0xac, 0xaa, 0xa4, 0xae, 0xaf, 0xa9, 0xaa, 0xa3, 0xa6, 0xaf, + 0xa9, 0xa0, 0xa0, 0xa6, 0xac, 0xaa, 0xab, 0xa1, 0xa7, 0xad, 0xad, 0xa8, + 0xaf, 0xa9, 0xa1, 0xa4, 0xa3, 0xa5, 0xae, 0xab, 0xa5, 0xac, 0xa2, 0xa7, + 0xa8, 0xa2, 0xa4, 0xae, 0x17, 0x1d, 0x1d, 0x18, 0x1e, 0x1b, 0x13, 0x15, + 0x10, 0x16, 0x16, 0x1f, 0x19, 0x10, 0x1a, 0x13, 0x11, 0x14, 0x12, 0x17, + 0x18, 0x12, 0x15, 0x1c, 0x1b, 0x11, 0x1c, 0x1a, 0x14, 0x1e, 0x1f, 0x19, + 0x1a, 0x13, 0x16, 0x1f, 0x19, 0x10, 0x10, 0x16, 0x1c, 0x1a, 0x1b, 0x11, + 0x17, 0x1d, 0x1d, 0x18, 0x1f, 0x19, 0x11, 0x14, 0x13, 0x15, 0x1e, 0x1b, + 0x15, 0x1c, 0x12, 0x17, 0x18, 0x12, 0x14, 0x1e, 0x27, 0x2d, 0x2d, 0x28, + 0x2e, 0x2b, 0x23, 0x25, 0x20, 0x26, 0x26, 0x2f, 0x29, 0x20, 0x2a, 0x23, + 0x21, 0x24, 0x22, 0x27, 0x28, 0x22, 0x25, 0x2c, 0x2b, 0x21, 0x2c, 0x2a, + 0x24, 0x2e, 0x2f, 0x29, 0x2a, 0x23, 0x26, 0x2f, 0x29, 0x20, 0x20, 0x26, + 0x2c, 0x2a, 0x2b, 0x21, 0x27, 0x2d, 0x2d, 0x28, 0x2f, 0x29, 0x21, 0x24, + 0x23, 0x25, 0x2e, 0x2b, 0x25, 0x2c, 0x22, 0x27, 0x28, 0x22, 0x24, 0x2e, + 0xd7, 0xdd, 0xdd, 0xd8, 0xde, 0xdb, 0xd3, 0xd5, 0xd0, 0xd6, 0xd6, 0xdf, + 0xd9, 0xd0, 0xda, 0xd3, 0xd1, 0xd4, 0xd2, 0xd7, 0xd8, 0xd2, 0xd5, 0xdc, + 0xdb, 0xd1, 0xdc, 0xda, 0xd4, 0xde, 0xdf, 0xd9, 0xda, 0xd3, 0xd6, 0xdf, + 0xd9, 0xd0, 0xd0, 0xd6, 0xdc, 0xda, 0xdb, 0xd1, 0xd7, 0xdd, 0xdd, 0xd8, + 0xdf, 0xd9, 0xd1, 0xd4, 0xd3, 0xd5, 0xde, 0xdb, 0xd5, 0xdc, 0xd2, 0xd7, + 0xd8, 0xd2, 0xd4, 0xde, 0x87, 0x8d, 0x8d, 0x88, 0x8e, 0x8b, 0x83, 0x85, + 0x80, 0x86, 0x86, 0x8f, 0x89, 0x80, 0x8a, 0x83, 0x81, 0x84, 0x82, 0x87, + 0x88, 0x82, 0x85, 0x8c, 0x8b, 0x81, 0x8c, 0x8a, 0x84, 0x8e, 0x8f, 0x89, + 0x8a, 0x83, 0x86, 0x8f, 0x89, 0x80, 0x80, 0x86, 0x8c, 0x8a, 0x8b, 0x81, + 0x87, 0x8d, 0x8d, 0x88, 0x8f, 0x89, 0x81, 0x84, 0x83, 0x85, 0x8e, 0x8b, + 0x85, 0x8c, 0x82, 0x87, 0x88, 0x82, 0x84, 0x8e, 0xc7, 0xcd, 0xcd, 0xc8, + 0xce, 0xcb, 0xc3, 0xc5, 0xc0, 0xc6, 0xc6, 0xcf, 0xc9, 0xc0, 0xca, 0xc3, + 0xc1, 0xc4, 0xc2, 0xc7, 0xc8, 0xc2, 0xc5, 0xcc, 0xcb, 0xc1, 0xcc, 0xca, + 0xc4, 0xce, 0xcf, 0xc9, 0xca, 0xc3, 0xc6, 0xcf, 0xc9, 0xc0, 0xc0, 0xc6, + 0xcc, 0xca, 0xcb, 0xc1, 0xc7, 0xcd, 0xcd, 0xc8, 0xcf, 0xc9, 0xc1, 0xc4, + 0xc3, 0xc5, 0xce, 0xcb, 0xc5, 0xcc, 0xc2, 0xc7, 0xc8, 0xc2, 0xc4, 0xce, + 0x57, 0x5d, 0x5d, 0x58, 0x5e, 0x5b, 0x53, 0x55, 0x50, 0x56, 0x56, 0x5f, + 0x59, 0x50, 0x5a, 0x53, 0x51, 0x54, 0x52, 0x57, 0x58, 0x52, 0x55, 0x5c, + 0x5b, 0x51, 0x5c, 0x5a, 0x54, 0x5e, 0x5f, 0x59, 0x5a, 0x53, 0x56, 0x5f, + 0x59, 0x50, 0x50, 0x56, 0x5c, 0x5a, 0x5b, 0x51, 0x57, 0x5d, 0x5d, 0x58, + 0x5f, 0x59, 0x51, 0x54, 0x53, 0x55, 0x5e, 0x5b, 0x55, 0x5c, 0x52, 0x57, + 0x58, 0x52, 0x54, 0x5e, 0x77, 0x7d, 0x7d, 0x78, 0x7e, 0x7b, 0x73, 0x75, + 0x70, 0x76, 0x76, 0x7f, 0x79, 0x70, 0x7a, 0x73, 0x71, 0x74, 0x72, 0x77, + 0x78, 0x72, 0x75, 0x7c, 0x7b, 0x71, 0x7c, 0x7a, 0x74, 0x7e, 0x7f, 0x79, + 0x7a, 0x73, 0x76, 0x7f, 0x79, 0x70, 0x70, 0x76, 0x7c, 0x7a, 0x7b, 0x71, + 0x77, 0x7d, 0x7d, 0x78, 0x7f, 0x79, 0x71, 0x74, 0x73, 0x75, 0x7e, 0x7b, + 0x75, 0x7c, 0x72, 0x77, 0x78, 0x72, 0x74, 0x7e, 0xe7, 0xed, 0xed, 0xe8, + 0xee, 0xeb, 0xe3, 0xe5, 0xe0, 0xe6, 0xe6, 0xef, 0xe9, 0xe0, 0xea, 0xe3, + 0xe1, 0xe4, 0xe2, 0xe7, 0xe8, 0xe2, 0xe5, 0xec, 0xeb, 0xe1, 0xec, 0xea, + 0xe4, 0xee, 0xef, 0xe9, 0xea, 0xe3, 0xe6, 0xef, 0xe9, 0xe0, 0xe0, 0xe6, + 0xec, 0xea, 0xeb, 0xe1, 0xe7, 0xed, 0xed, 0xe8, 0xef, 0xe9, 0xe1, 0xe4, + 0xe3, 0xe5, 0xee, 0xeb, 0xe5, 0xec, 0xe2, 0xe7, 0xe8, 0xe2, 0xe4, 0xee, + 0xb7, 0xbd, 0xbd, 0xb8, 0xbe, 0xbb, 0xb3, 0xb5, 0xb0, 0xb6, 0xb6, 0xbf, + 0xb9, 0xb0, 0xba, 0xb3, 0xb1, 0xb4, 0xb2, 0xb7, 0xb8, 0xb2, 0xb5, 0xbc, + 0xbb, 0xb1, 0xbc, 0xba, 0xb4, 0xbe, 0xbf, 0xb9, 0xba, 0xb3, 0xb6, 0xbf, + 0xb9, 0xb0, 0xb0, 0xb6, 0xbc, 0xba, 0xbb, 0xb1, 0xb7, 0xbd, 0xbd, 0xb8, + 0xbf, 0xb9, 0xb1, 0xb4, 0xb3, 0xb5, 0xbe, 0xbb, 0xb5, 0xbc, 0xb2, 0xb7, + 0xb8, 0xb2, 0xb4, 0xbe, 0xc7, 0xcd, 0xcd, 0xc8, 0xce, 0xcb, 0xc3, 0xc5, + 0xc0, 0xc6, 0xc6, 0xcf, 0xc9, 0xc0, 0xca, 0xc3, 0xc1, 0xc4, 0xc2, 0xc7, + 0xc8, 0xc2, 0xc5, 0xcc, 0xcb, 0xc1, 0xcc, 0xca, 0xc4, 0xce, 0xcf, 0xc9, + 0xca, 0xc3, 0xc6, 0xcf, 0xc9, 0xc0, 0xc0, 0xc6, 0xcc, 0xca, 0xcb, 0xc1, + 0xc7, 0xcd, 0xcd, 0xc8, 0xcf, 0xc9, 0xc1, 0xc4, 0xc3, 0xc5, 0xce, 0xcb, + 0xc5, 0xcc, 0xc2, 0xc7, 0xc8, 0xc2, 0xc4, 0xce, 0x47, 0x4d, 0x4d, 0x48, + 0x4e, 0x4b, 0x43, 0x45, 0x40, 0x46, 0x46, 0x4f, 0x49, 0x40, 0x4a, 0x43, + 0x41, 0x44, 0x42, 0x47, 0x48, 0x42, 0x45, 0x4c, 0x4b, 0x41, 0x4c, 0x4a, + 0x44, 0x4e, 0x4f, 0x49, 0x4a, 0x43, 0x46, 0x4f, 0x49, 0x40, 0x40, 0x46, + 0x4c, 0x4a, 0x4b, 0x41, 0x47, 0x4d, 0x4d, 0x48, 0x4f, 0x49, 0x41, 0x44, + 0x43, 0x45, 0x4e, 0x4b, 0x45, 0x4c, 0x42, 0x47, 0x48, 0x42, 0x44, 0x4e, + 0xb7, 0xbd, 0xbd, 0xb8, 0xbe, 0xbb, 0xb3, 0xb5, 0xb0, 0xb6, 0xb6, 0xbf, + 0xb9, 0xb0, 0xba, 0xb3, 0xb1, 0xb4, 0xb2, 0xb7, 0xb8, 0xb2, 0xb5, 0xbc, + 0xbb, 0xb1, 0xbc, 0xba, 0xb4, 0xbe, 0xbf, 0xb9, 0xba, 0xb3, 0xb6, 0xbf, + 0xb9, 0xb0, 0xb0, 0xb6, 0xbc, 0xba, 0xbb, 0xb1, 0xb7, 0xbd, 0xbd, 0xb8, + 0xbf, 0xb9, 0xb1, 0xb4, 0xb3, 0xb5, 0xbe, 0xbb, 0xb5, 0xbc, 0xb2, 0xb7, + 0xb8, 0xb2, 0xb4, 0xbe, 0x27, 0x2d, 0x2d, 0x28, 0x2e, 0x2b, 0x23, 0x25, + 0x20, 0x26, 0x26, 0x2f, 0x29, 0x20, 0x2a, 0x23, 0x21, 0x24, 0x22, 0x27, + 0x28, 0x22, 0x25, 0x2c, 0x2b, 0x21, 0x2c, 0x2a, 0x24, 0x2e, 0x2f, 0x29, + 0x2a, 0x23, 0x26, 0x2f, 0x29, 0x20, 0x20, 0x26, 0x2c, 0x2a, 0x2b, 0x21, + 0x27, 0x2d, 0x2d, 0x28, 0x2f, 0x29, 0x21, 0x24, 0x23, 0x25, 0x2e, 0x2b, + 0x25, 0x2c, 0x22, 0x27, 0x28, 0x22, 0x24, 0x2e, 0xf7, 0xfd, 0xfd, 0xf8, + 0xfe, 0xfb, 0xf3, 0xf5, 0xf0, 0xf6, 0xf6, 0xff, 0xf9, 0xf0, 0xfa, 0xf3, + 0xf1, 0xf4, 0xf2, 0xf7, 0xf8, 0xf2, 0xf5, 0xfc, 0xfb, 0xf1, 0xfc, 0xfa, + 0xf4, 0xfe, 0xff, 0xf9, 0xfa, 0xf3, 0xf6, 0xff, 0xf9, 0xf0, 0xf0, 0xf6, + 0xfc, 0xfa, 0xfb, 0xf1, 0xf7, 0xfd, 0xfd, 0xf8, 0xff, 0xf9, 0xf1, 0xf4, + 0xf3, 0xf5, 0xfe, 0xfb, 0xf5, 0xfc, 0xf2, 0xf7, 0xf8, 0xf2, 0xf4, 0xfe, + 0x87, 0x8d, 0x8d, 0x88, 0x8e, 0x8b, 0x83, 0x85, 0x80, 0x86, 0x86, 0x8f, + 0x89, 0x80, 0x8a, 0x83, 0x81, 0x84, 0x82, 0x87, 0x88, 0x82, 0x85, 0x8c, + 0x8b, 0x81, 0x8c, 0x8a, 0x84, 0x8e, 0x8f, 0x89, 0x8a, 0x83, 0x86, 0x8f, + 0x89, 0x80, 0x80, 0x86, 0x8c, 0x8a, 0x8b, 0x81, 0x87, 0x8d, 0x8d, 0x88, + 0x8f, 0x89, 0x81, 0x84, 0x83, 0x85, 0x8e, 0x8b, 0x85, 0x8c, 0x82, 0x87, + 0x88, 0x82, 0x84, 0x8e, 0x17, 0x1d, 0x1d, 0x18, 0x1e, 0x1b, 0x13, 0x15, + 0x10, 0x16, 0x16, 0x1f, 0x19, 0x10, 0x1a, 0x13, 0x11, 0x14, 0x12, 0x17, + 0x18, 0x12, 0x15, 0x1c, 0x1b, 0x11, 0x1c, 0x1a, 0x14, 0x1e, 0x1f, 0x19, + 0x1a, 0x13, 0x16, 0x1f, 0x19, 0x10, 0x10, 0x16, 0x1c, 0x1a, 0x1b, 0x11, + 0x17, 0x1d, 0x1d, 0x18, 0x1f, 0x19, 0x11, 0x14, 0x13, 0x15, 0x1e, 0x1b, + 0x15, 0x1c, 0x12, 0x17, 0x18, 0x12, 0x14, 0x1e, 0xd7, 0xdd, 0xdd, 0xd8, + 0xde, 0xdb, 0xd3, 0xd5, 0xd0, 0xd6, 0xd6, 0xdf, 0xd9, 0xd0, 0xda, 0xd3, + 0xd1, 0xd4, 0xd2, 0xd7, 0xd8, 0xd2, 0xd5, 0xdc, 0xdb, 0xd1, 0xdc, 0xda, + 0xd4, 0xde, 0xdf, 0xd9, 0xda, 0xd3, 0xd6, 0xdf, 0xd9, 0xd0, 0xd0, 0xd6, + 0xdc, 0xda, 0xdb, 0xd1, 0xd7, 0xdd, 0xdd, 0xd8, 0xdf, 0xd9, 0xd1, 0xd4, + 0xd3, 0xd5, 0xde, 0xdb, 0xd5, 0xdc, 0xd2, 0xd7, 0xd8, 0xd2, 0xd4, 0xde, + 0x17, 0x1d, 0x1d, 0x18, 0x1e, 0x1b, 0x13, 0x15, 0x10, 0x16, 0x16, 0x1f, + 0x19, 0x10, 0x1a, 0x13, 0x11, 0x14, 0x12, 0x17, 0x18, 0x12, 0x15, 0x1c, + 0x1b, 0x11, 0x1c, 0x1a, 0x14, 0x1e, 0x1f, 0x19, 0x1a, 0x13, 0x16, 0x1f, + 0x19, 0x10, 0x10, 0x16, 0x1c, 0x1a, 0x1b, 0x11, 0x17, 0x1d, 0x1d, 0x18, + 0x1f, 0x19, 0x11, 0x14, 0x13, 0x15, 0x1e, 0x1b, 0x15, 0x1c, 0x12, 0x17, + 0x18, 0x12, 0x14, 0x1e, 0x67, 0x6d, 0x6d, 0x68, 0x6e, 0x6b, 0x63, 0x65, + 0x60, 0x66, 0x66, 0x6f, 0x69, 0x60, 0x6a, 0x63, 0x61, 0x64, 0x62, 0x67, + 0x68, 0x62, 0x65, 0x6c, 0x6b, 0x61, 0x6c, 0x6a, 0x64, 0x6e, 0x6f, 0x69, + 0x6a, 0x63, 0x66, 0x6f, 0x69, 0x60, 0x60, 0x66, 0x6c, 0x6a, 0x6b, 0x61, + 0x67, 0x6d, 0x6d, 0x68, 0x6f, 0x69, 0x61, 0x64, 0x63, 0x65, 0x6e, 0x6b, + 0x65, 0x6c, 0x62, 0x67, 0x68, 0x62, 0x64, 0x6e, 0xa7, 0xad, 0xad, 0xa8, + 0xae, 0xab, 0xa3, 0xa5, 0xa0, 0xa6, 0xa6, 0xaf, 0xa9, 0xa0, 0xaa, 0xa3, + 0xa1, 0xa4, 0xa2, 0xa7, 0xa8, 0xa2, 0xa5, 0xac, 0xab, 0xa1, 0xac, 0xaa, + 0xa4, 0xae, 0xaf, 0xa9, 0xaa, 0xa3, 0xa6, 0xaf, 0xa9, 0xa0, 0xa0, 0xa6, + 0xac, 0xaa, 0xab, 0xa1, 0xa7, 0xad, 0xad, 0xa8, 0xaf, 0xa9, 0xa1, 0xa4, + 0xa3, 0xa5, 0xae, 0xab, 0xa5, 0xac, 0xa2, 0xa7, 0xa8, 0xa2, 0xa4, 0xae, + 0x47, 0x4d, 0x4d, 0x48, 0x4e, 0x4b, 0x43, 0x45, 0x40, 0x46, 0x46, 0x4f, + 0x49, 0x40, 0x4a, 0x43, 0x41, 0x44, 0x42, 0x47, 0x48, 0x42, 0x45, 0x4c, + 0x4b, 0x41, 0x4c, 0x4a, 0x44, 0x4e, 0x4f, 0x49, 0x4a, 0x43, 0x46, 0x4f, + 0x49, 0x40, 0x40, 0x46, 0x4c, 0x4a, 0x4b, 0x41, 0x47, 0x4d, 0x4d, 0x48, + 0x4f, 0x49, 0x41, 0x44, 0x43, 0x45, 0x4e, 0x4b, 0x45, 0x4c, 0x42, 0x47, + 0x48, 0x42, 0x44, 0x4e, 0xd7, 0xdd, 0xdd, 0xd8, 0xde, 0xdb, 0xd3, 0xd5, + 0xd0, 0xd6, 0xd6, 0xdf, 0xd9, 0xd0, 0xda, 0xd3, 0xd1, 0xd4, 0xd2, 0xd7, + 0xd8, 0xd2, 0xd5, 0xdc, 0xdb, 0xd1, 0xdc, 0xda, 0xd4, 0xde, 0xdf, 0xd9, + 0xda, 0xd3, 0xd6, 0xdf, 0xd9, 0xd0, 0xd0, 0xd6, 0xdc, 0xda, 0xdb, 0xd1, + 0xd7, 0xdd, 0xdd, 0xd8, 0xdf, 0xd9, 0xd1, 0xd4, 0xd3, 0xd5, 0xde, 0xdb, + 0xd5, 0xdc, 0xd2, 0xd7, 0xd8, 0xd2, 0xd4, 0xde, 0x97, 0x9d, 0x9d, 0x98, + 0x9e, 0x9b, 0x93, 0x95, 0x90, 0x96, 0x96, 0x9f, 0x99, 0x90, 0x9a, 0x93, + 0x91, 0x94, 0x92, 0x97, 0x98, 0x92, 0x95, 0x9c, 0x9b, 0x91, 0x9c, 0x9a, + 0x94, 0x9e, 0x9f, 0x99, 0x9a, 0x93, 0x96, 0x9f, 0x99, 0x90, 0x90, 0x96, + 0x9c, 0x9a, 0x9b, 0x91, 0x97, 0x9d, 0x9d, 0x98, 0x9f, 0x99, 0x91, 0x94, + 0x93, 0x95, 0x9e, 0x9b, 0x95, 0x9c, 0x92, 0x97, 0x98, 0x92, 0x94, 0x9e, + 0x07, 0x0d, 0x0d, 0x08, 0x0e, 0x0b, 0x03, 0x05, 0x00, 0x06, 0x06, 0x0f, + 0x09, 0x00, 0x0a, 0x03, 0x01, 0x04, 0x02, 0x07, 0x08, 0x02, 0x05, 0x0c, + 0x0b, 0x01, 0x0c, 0x0a, 0x04, 0x0e, 0x0f, 0x09, 0x0a, 0x03, 0x06, 0x0f, + 0x09, 0x00, 0x00, 0x06, 0x0c, 0x0a, 0x0b, 0x01, 0x07, 0x0d, 0x0d, 0x08, + 0x0f, 0x09, 0x01, 0x04, 0x03, 0x05, 0x0e, 0x0b, 0x05, 0x0c, 0x02, 0x07, + 0x08, 0x02, 0x04, 0x0e, 0x87, 0x8d, 0x8d, 0x88, 0x8e, 0x8b, 0x83, 0x85, + 0x80, 0x86, 0x86, 0x8f, 0x89, 0x80, 0x8a, 0x83, 0x81, 0x84, 0x82, 0x87, + 0x88, 0x82, 0x85, 0x8c, 0x8b, 0x81, 0x8c, 0x8a, 0x84, 0x8e, 0x8f, 0x89, + 0x8a, 0x83, 0x86, 0x8f, 0x89, 0x80, 0x80, 0x86, 0x8c, 0x8a, 0x8b, 0x81, + 0x87, 0x8d, 0x8d, 0x88, 0x8f, 0x89, 0x81, 0x84, 0x83, 0x85, 0x8e, 0x8b, + 0x85, 0x8c, 0x82, 0x87, 0x88, 0x82, 0x84, 0x8e, 0x67, 0x6d, 0x6d, 0x68, + 0x6e, 0x6b, 0x63, 0x65, 0x60, 0x66, 0x66, 0x6f, 0x69, 0x60, 0x6a, 0x63, + 0x61, 0x64, 0x62, 0x67, 0x68, 0x62, 0x65, 0x6c, 0x6b, 0x61, 0x6c, 0x6a, + 0x64, 0x6e, 0x6f, 0x69, 0x6a, 0x63, 0x66, 0x6f, 0x69, 0x60, 0x60, 0x66, + 0x6c, 0x6a, 0x6b, 0x61, 0x67, 0x6d, 0x6d, 0x68, 0x6f, 0x69, 0x61, 0x64, + 0x63, 0x65, 0x6e, 0x6b, 0x65, 0x6c, 0x62, 0x67, 0x68, 0x62, 0x64, 0x6e, + 0xf7, 0xfd, 0xfd, 0xf8, 0xfe, 0xfb, 0xf3, 0xf5, 0xf0, 0xf6, 0xf6, 0xff, + 0xf9, 0xf0, 0xfa, 0xf3, 0xf1, 0xf4, 0xf2, 0xf7, 0xf8, 0xf2, 0xf5, 0xfc, + 0xfb, 0xf1, 0xfc, 0xfa, 0xf4, 0xfe, 0xff, 0xf9, 0xfa, 0xf3, 0xf6, 0xff, + 0xf9, 0xf0, 0xf0, 0xf6, 0xfc, 0xfa, 0xfb, 0xf1, 0xf7, 0xfd, 0xfd, 0xf8, + 0xff, 0xf9, 0xf1, 0xf4, 0xf3, 0xf5, 0xfe, 0xfb, 0xf5, 0xfc, 0xf2, 0xf7, + 0xf8, 0xf2, 0xf4, 0xfe, 0x97, 0x9d, 0x9d, 0x98, 0x9e, 0x9b, 0x93, 0x95, + 0x90, 0x96, 0x96, 0x9f, 0x99, 0x90, 0x9a, 0x93, 0x91, 0x94, 0x92, 0x97, + 0x98, 0x92, 0x95, 0x9c, 0x9b, 0x91, 0x9c, 0x9a, 0x94, 0x9e, 0x9f, 0x99, + 0x9a, 0x93, 0x96, 0x9f, 0x99, 0x90, 0x90, 0x96, 0x9c, 0x9a, 0x9b, 0x91, + 0x97, 0x9d, 0x9d, 0x98, 0x9f, 0x99, 0x91, 0x94, 0x93, 0x95, 0x9e, 0x9b, + 0x95, 0x9c, 0x92, 0x97, 0x98, 0x92, 0x94, 0x9e, 0x37, 0x3d, 0x3d, 0x38, + 0x3e, 0x3b, 0x33, 0x35, 0x30, 0x36, 0x36, 0x3f, 0x39, 0x30, 0x3a, 0x33, + 0x31, 0x34, 0x32, 0x37, 0x38, 0x32, 0x35, 0x3c, 0x3b, 0x31, 0x3c, 0x3a, + 0x34, 0x3e, 0x3f, 0x39, 0x3a, 0x33, 0x36, 0x3f, 0x39, 0x30, 0x30, 0x36, + 0x3c, 0x3a, 0x3b, 0x31, 0x37, 0x3d, 0x3d, 0x38, 0x3f, 0x39, 0x31, 0x34, + 0x33, 0x35, 0x3e, 0x3b, 0x35, 0x3c, 0x32, 0x37, 0x38, 0x32, 0x34, 0x3e, + 0x87, 0x8d, 0x8d, 0x88, 0x8e, 0x8b, 0x83, 0x85, 0x80, 0x86, 0x86, 0x8f, + 0x89, 0x80, 0x8a, 0x83, 0x81, 0x84, 0x82, 0x87, 0x88, 0x82, 0x85, 0x8c, + 0x8b, 0x81, 0x8c, 0x8a, 0x84, 0x8e, 0x8f, 0x89, 0x8a, 0x83, 0x86, 0x8f, + 0x89, 0x80, 0x80, 0x86, 0x8c, 0x8a, 0x8b, 0x81, 0x87, 0x8d, 0x8d, 0x88, + 0x8f, 0x89, 0x81, 0x84, 0x83, 0x85, 0x8e, 0x8b, 0x85, 0x8c, 0x82, 0x87, + 0x88, 0x82, 0x84, 0x8e, 0x07, 0x0d, 0x0d, 0x08, 0x0e, 0x0b, 0x03, 0x05, + 0x00, 0x06, 0x06, 0x0f, 0x09, 0x00, 0x0a, 0x03, 0x01, 0x04, 0x02, 0x07, + 0x08, 0x02, 0x05, 0x0c, 0x0b, 0x01, 0x0c, 0x0a, 0x04, 0x0e, 0x0f, 0x09, + 0x0a, 0x03, 0x06, 0x0f, 0x09, 0x00, 0x00, 0x06, 0x0c, 0x0a, 0x0b, 0x01, + 0x07, 0x0d, 0x0d, 0x08, 0x0f, 0x09, 0x01, 0x04, 0x03, 0x05, 0x0e, 0x0b, + 0x05, 0x0c, 0x02, 0x07, 0x08, 0x02, 0x04, 0x0e, 0x77, 0x7d, 0x7d, 0x78, + 0x7e, 0x7b, 0x73, 0x75, 0x70, 0x76, 0x76, 0x7f, 0x79, 0x70, 0x7a, 0x73, + 0x71, 0x74, 0x72, 0x77, 0x78, 0x72, 0x75, 0x7c, 0x7b, 0x71, 0x7c, 0x7a, + 0x74, 0x7e, 0x7f, 0x79, 0x7a, 0x73, 0x76, 0x7f, 0x79, 0x70, 0x70, 0x76, + 0x7c, 0x7a, 0x7b, 0x71, 0x77, 0x7d, 0x7d, 0x78, 0x7f, 0x79, 0x71, 0x74, + 0x73, 0x75, 0x7e, 0x7b, 0x75, 0x7c, 0x72, 0x77, 0x78, 0x72, 0x74, 0x7e, + 0xb7, 0xbd, 0xbd, 0xb8, 0xbe, 0xbb, 0xb3, 0xb5, 0xb0, 0xb6, 0xb6, 0xbf, + 0xb9, 0xb0, 0xba, 0xb3, 0xb1, 0xb4, 0xb2, 0xb7, 0xb8, 0xb2, 0xb5, 0xbc, + 0xbb, 0xb1, 0xbc, 0xba, 0xb4, 0xbe, 0xbf, 0xb9, 0xba, 0xb3, 0xb6, 0xbf, + 0xb9, 0xb0, 0xb0, 0xb6, 0xbc, 0xba, 0xbb, 0xb1, 0xb7, 0xbd, 0xbd, 0xb8, + 0xbf, 0xb9, 0xb1, 0xb4, 0xb3, 0xb5, 0xbe, 0xbb, 0xb5, 0xbc, 0xb2, 0xb7, + 0xb8, 0xb2, 0xb4, 0xbe, 0x47, 0x4d, 0x4d, 0x48, 0x4e, 0x4b, 0x43, 0x45, + 0x40, 0x46, 0x46, 0x4f, 0x49, 0x40, 0x4a, 0x43, 0x41, 0x44, 0x42, 0x47, + 0x48, 0x42, 0x45, 0x4c, 0x4b, 0x41, 0x4c, 0x4a, 0x44, 0x4e, 0x4f, 0x49, + 0x4a, 0x43, 0x46, 0x4f, 0x49, 0x40, 0x40, 0x46, 0x4c, 0x4a, 0x4b, 0x41, + 0x47, 0x4d, 0x4d, 0x48, 0x4f, 0x49, 0x41, 0x44, 0x43, 0x45, 0x4e, 0x4b, + 0x45, 0x4c, 0x42, 0x47, 0x48, 0x42, 0x44, 0x4e, 0x17, 0x1d, 0x1d, 0x18, + 0x1e, 0x1b, 0x13, 0x15, 0x10, 0x16, 0x16, 0x1f, 0x19, 0x10, 0x1a, 0x13, + 0x11, 0x14, 0x12, 0x17, 0x18, 0x12, 0x15, 0x1c, 0x1b, 0x11, 0x1c, 0x1a, + 0x14, 0x1e, 0x1f, 0x19, 0x1a, 0x13, 0x16, 0x1f, 0x19, 0x10, 0x10, 0x16, + 0x1c, 0x1a, 0x1b, 0x11, 0x17, 0x1d, 0x1d, 0x18, 0x1f, 0x19, 0x11, 0x14, + 0x13, 0x15, 0x1e, 0x1b, 0x15, 0x1c, 0x12, 0x17, 0x18, 0x12, 0x14, 0x1e, + 0xf7, 0xfd, 0xfd, 0xf8, 0xfe, 0xfb, 0xf3, 0xf5, 0xf0, 0xf6, 0xf6, 0xff, + 0xf9, 0xf0, 0xfa, 0xf3, 0xf1, 0xf4, 0xf2, 0xf7, 0xf8, 0xf2, 0xf5, 0xfc, + 0xfb, 0xf1, 0xfc, 0xfa, 0xf4, 0xfe, 0xff, 0xf9, 0xfa, 0xf3, 0xf6, 0xff, + 0xf9, 0xf0, 0xf0, 0xf6, 0xfc, 0xfa, 0xfb, 0xf1, 0xf7, 0xfd, 0xfd, 0xf8, + 0xff, 0xf9, 0xf1, 0xf4, 0xf3, 0xf5, 0xfe, 0xfb, 0xf5, 0xfc, 0xf2, 0xf7, + 0xf8, 0xf2, 0xf4, 0xfe, 0x27, 0x2d, 0x2d, 0x28, 0x2e, 0x2b, 0x23, 0x25, + 0x20, 0x26, 0x26, 0x2f, 0x29, 0x20, 0x2a, 0x23, 0x21, 0x24, 0x22, 0x27, + 0x28, 0x22, 0x25, 0x2c, 0x2b, 0x21, 0x2c, 0x2a, 0x24, 0x2e, 0x2f, 0x29, + 0x2a, 0x23, 0x26, 0x2f, 0x29, 0x20, 0x20, 0x26, 0x2c, 0x2a, 0x2b, 0x21, + 0x27, 0x2d, 0x2d, 0x28, 0x2f, 0x29, 0x21, 0x24, 0x23, 0x25, 0x2e, 0x2b, + 0x25, 0x2c, 0x22, 0x27, 0x28, 0x22, 0x24, 0x2e, 0xe7, 0xed, 0xed, 0xe8, + 0xee, 0xeb, 0xe3, 0xe5, 0xe0, 0xe6, 0xe6, 0xef, 0xe9, 0xe0, 0xea, 0xe3, + 0xe1, 0xe4, 0xe2, 0xe7, 0xe8, 0xe2, 0xe5, 0xec, 0xeb, 0xe1, 0xec, 0xea, + 0xe4, 0xee, 0xef, 0xe9, 0xea, 0xe3, 0xe6, 0xef, 0xe9, 0xe0, 0xe0, 0xe6, + 0xec, 0xea, 0xeb, 0xe1, 0xe7, 0xed, 0xed, 0xe8, 0xef, 0xe9, 0xe1, 0xe4, + 0xe3, 0xe5, 0xee, 0xeb, 0xe5, 0xec, 0xe2, 0xe7, 0xe8, 0xe2, 0xe4, 0xee, + 0xc7, 0xcd, 0xcd, 0xc8, 0xce, 0xcb, 0xc3, 0xc5, 0xc0, 0xc6, 0xc6, 0xcf, + 0xc9, 0xc0, 0xca, 0xc3, 0xc1, 0xc4, 0xc2, 0xc7, 0xc8, 0xc2, 0xc5, 0xcc, + 0xcb, 0xc1, 0xcc, 0xca, 0xc4, 0xce, 0xcf, 0xc9, 0xca, 0xc3, 0xc6, 0xcf, + 0xc9, 0xc0, 0xc0, 0xc6, 0xcc, 0xca, 0xcb, 0xc1, 0xc7, 0xcd, 0xcd, 0xc8, + 0xcf, 0xc9, 0xc1, 0xc4, 0xc3, 0xc5, 0xce, 0xcb, 0xc5, 0xcc, 0xc2, 0xc7, + 0xc8, 0xc2, 0xc4, 0xce, 0x37, 0x3d, 0x3d, 0x38, 0x3e, 0x3b, 0x33, 0x35, + 0x30, 0x36, 0x36, 0x3f, 0x39, 0x30, 0x3a, 0x33, 0x31, 0x34, 0x32, 0x37, + 0x38, 0x32, 0x35, 0x3c, 0x3b, 0x31, 0x3c, 0x3a, 0x34, 0x3e, 0x3f, 0x39, + 0x3a, 0x33, 0x36, 0x3f, 0x39, 0x30, 0x30, 0x36, 0x3c, 0x3a, 0x3b, 0x31, + 0x37, 0x3d, 0x3d, 0x38, 0x3f, 0x39, 0x31, 0x34, 0x33, 0x35, 0x3e, 0x3b, + 0x35, 0x3c, 0x32, 0x37, 0x38, 0x32, 0x34, 0x3e, 0x57, 0x5d, 0x5d, 0x58, + 0x5e, 0x5b, 0x53, 0x55, 0x50, 0x56, 0x56, 0x5f, 0x59, 0x50, 0x5a, 0x53, + 0x51, 0x54, 0x52, 0x57, 0x58, 0x52, 0x55, 0x5c, 0x5b, 0x51, 0x5c, 0x5a, + 0x54, 0x5e, 0x5f, 0x59, 0x5a, 0x53, 0x56, 0x5f, 0x59, 0x50, 0x50, 0x56, + 0x5c, 0x5a, 0x5b, 0x51, 0x57, 0x5d, 0x5d, 0x58, 0x5f, 0x59, 0x51, 0x54, + 0x53, 0x55, 0x5e, 0x5b, 0x55, 0x5c, 0x52, 0x57, 0x58, 0x52, 0x54, 0x5e, + 0xb7, 0xbd, 0xbd, 0xb8, 0xbe, 0xbb, 0xb3, 0xb5, 0xb0, 0xb6, 0xb6, 0xbf, + 0xb9, 0xb0, 0xba, 0xb3, 0xb1, 0xb4, 0xb2, 0xb7, 0xb8, 0xb2, 0xb5, 0xbc, + 0xbb, 0xb1, 0xbc, 0xba, 0xb4, 0xbe, 0xbf, 0xb9, 0xba, 0xb3, 0xb6, 0xbf, + 0xb9, 0xb0, 0xb0, 0xb6, 0xbc, 0xba, 0xbb, 0xb1, 0xb7, 0xbd, 0xbd, 0xb8, + 0xbf, 0xb9, 0xb1, 0xb4, 0xb3, 0xb5, 0xbe, 0xbb, 0xb5, 0xbc, 0xb2, 0xb7, + 0xb8, 0xb2, 0xb4, 0xbe, 0xa7, 0xad, 0xad, 0xa8, 0xae, 0xab, 0xa3, 0xa5, + 0xa0, 0xa6, 0xa6, 0xaf, 0xa9, 0xa0, 0xaa, 0xa3, 0xa1, 0xa4, 0xa2, 0xa7, + 0xa8, 0xa2, 0xa5, 0xac, 0xab, 0xa1, 0xac, 0xaa, 0xa4, 0xae, 0xaf, 0xa9, + 0xaa, 0xa3, 0xa6, 0xaf, 0xa9, 0xa0, 0xa0, 0xa6, 0xac, 0xaa, 0xab, 0xa1, + 0xa7, 0xad, 0xad, 0xa8, 0xaf, 0xa9, 0xa1, 0xa4, 0xa3, 0xa5, 0xae, 0xab, + 0xa5, 0xac, 0xa2, 0xa7, 0xa8, 0xa2, 0xa4, 0xae, 0x57, 0x5d, 0x5d, 0x58, + 0x5e, 0x5b, 0x53, 0x55, 0x50, 0x56, 0x56, 0x5f, 0x59, 0x50, 0x5a, 0x53, + 0x51, 0x54, 0x52, 0x57, 0x58, 0x52, 0x55, 0x5c, 0x5b, 0x51, 0x5c, 0x5a, + 0x54, 0x5e, 0x5f, 0x59, 0x5a, 0x53, 0x56, 0x5f, 0x59, 0x50, 0x50, 0x56, + 0x5c, 0x5a, 0x5b, 0x51, 0x57, 0x5d, 0x5d, 0x58, 0x5f, 0x59, 0x51, 0x54, + 0x53, 0x55, 0x5e, 0x5b, 0x55, 0x5c, 0x52, 0x57, 0x58, 0x52, 0x54, 0x5e, + 0xe7, 0xed, 0xed, 0xe8, 0xee, 0xeb, 0xe3, 0xe5, 0xe0, 0xe6, 0xe6, 0xef, + 0xe9, 0xe0, 0xea, 0xe3, 0xe1, 0xe4, 0xe2, 0xe7, 0xe8, 0xe2, 0xe5, 0xec, + 0xeb, 0xe1, 0xec, 0xea, 0xe4, 0xee, 0xef, 0xe9, 0xea, 0xe3, 0xe6, 0xef, + 0xe9, 0xe0, 0xe0, 0xe6, 0xec, 0xea, 0xeb, 0xe1, 0xe7, 0xed, 0xed, 0xe8, + 0xef, 0xe9, 0xe1, 0xe4, 0xe3, 0xe5, 0xee, 0xeb, 0xe5, 0xec, 0xe2, 0xe7, + 0xe8, 0xe2, 0xe4, 0xee, 0x27, 0x2d, 0x2d, 0x28, 0x2e, 0x2b, 0x23, 0x25, + 0x20, 0x26, 0x26, 0x2f, 0x29, 0x20, 0x2a, 0x23, 0x21, 0x24, 0x22, 0x27, + 0x28, 0x22, 0x25, 0x2c, 0x2b, 0x21, 0x2c, 0x2a, 0x24, 0x2e, 0x2f, 0x29, + 0x2a, 0x23, 0x26, 0x2f, 0x29, 0x20, 0x20, 0x26, 0x2c, 0x2a, 0x2b, 0x21, + 0x27, 0x2d, 0x2d, 0x28, 0x2f, 0x29, 0x21, 0x24, 0x23, 0x25, 0x2e, 0x2b, + 0x25, 0x2c, 0x22, 0x27, 0x28, 0x22, 0x24, 0x2e, 0x77, 0x7d, 0x7d, 0x78, + 0x7e, 0x7b, 0x73, 0x75, 0x70, 0x76, 0x76, 0x7f, 0x79, 0x70, 0x7a, 0x73, + 0x71, 0x74, 0x72, 0x77, 0x78, 0x72, 0x75, 0x7c, 0x7b, 0x71, 0x7c, 0x7a, + 0x74, 0x7e, 0x7f, 0x79, 0x7a, 0x73, 0x76, 0x7f, 0x79, 0x70, 0x70, 0x76, + 0x7c, 0x7a, 0x7b, 0x71, 0x77, 0x7d, 0x7d, 0x78, 0x7f, 0x79, 0x71, 0x74, + 0x73, 0x75, 0x7e, 0x7b, 0x75, 0x7c, 0x72, 0x77, 0x78, 0x72, 0x74, 0x7e, + 0xc7, 0xcd, 0xcd, 0xc8, 0xce, 0xcb, 0xc3, 0xc5, 0xc0, 0xc6, 0xc6, 0xcf, + 0xc9, 0xc0, 0xca, 0xc3, 0xc1, 0xc4, 0xc2, 0xc7, 0xc8, 0xc2, 0xc5, 0xcc, + 0xcb, 0xc1, 0xcc, 0xca, 0xc4, 0xce, 0xcf, 0xc9, 0xca, 0xc3, 0xc6, 0xcf, + 0xc9, 0xc0, 0xc0, 0xc6, 0xcc, 0xca, 0xcb, 0xc1, 0xc7, 0xcd, 0xcd, 0xc8, + 0xcf, 0xc9, 0xc1, 0xc4, 0xc3, 0xc5, 0xce, 0xcb, 0xc5, 0xcc, 0xc2, 0xc7, + 0xc8, 0xc2, 0xc4, 0xce, + }, + { + 0x2c, 0x2a, 0x21, 0x2f, 0x2a, 0x24, 0x2f, 0x22, 0x29, 0x27, 0x22, 0x2c, + 0x26, 0x29, 0x28, 0x25, 0x20, 0x26, 0x2d, 0x21, 0x23, 0x2d, 0x24, 0x2e, + 0x2e, 0x20, 0x27, 0x2b, 0x25, 0x23, 0x2b, 0x28, 0x29, 0x24, 0x2e, 0x23, + 0x2f, 0x22, 0x25, 0x2c, 0x22, 0x29, 0x28, 0x25, 0x2c, 0x2f, 0x23, 0x2a, + 0x27, 0x2b, 0x20, 0x2e, 0x24, 0x21, 0x2a, 0x27, 0x21, 0x26, 0x2d, 0x20, + 0x2b, 0x28, 0x26, 0x2d, 0xec, 0xea, 0xe1, 0xef, 0xea, 0xe4, 0xef, 0xe2, + 0xe9, 0xe7, 0xe2, 0xec, 0xe6, 0xe9, 0xe8, 0xe5, 0xe0, 0xe6, 0xed, 0xe1, + 0xe3, 0xed, 0xe4, 0xee, 0xee, 0xe0, 0xe7, 0xeb, 0xe5, 0xe3, 0xeb, 0xe8, + 0xe9, 0xe4, 0xee, 0xe3, 0xef, 0xe2, 0xe5, 0xec, 0xe2, 0xe9, 0xe8, 0xe5, + 0xec, 0xef, 0xe3, 0xea, 0xe7, 0xeb, 0xe0, 0xee, 0xe4, 0xe1, 0xea, 0xe7, + 0xe1, 0xe6, 0xed, 0xe0, 0xeb, 0xe8, 0xe6, 0xed, 0xcc, 0xca, 0xc1, 0xcf, + 0xca, 0xc4, 0xcf, 0xc2, 0xc9, 0xc7, 0xc2, 0xcc, 0xc6, 0xc9, 0xc8, 0xc5, + 0xc0, 0xc6, 0xcd, 0xc1, 0xc3, 0xcd, 0xc4, 0xce, 0xce, 0xc0, 0xc7, 0xcb, + 0xc5, 0xc3, 0xcb, 0xc8, 0xc9, 0xc4, 0xce, 0xc3, 0xcf, 0xc2, 0xc5, 0xcc, + 0xc2, 0xc9, 0xc8, 0xc5, 0xcc, 0xcf, 0xc3, 0xca, 0xc7, 0xcb, 0xc0, 0xce, + 0xc4, 0xc1, 0xca, 0xc7, 0xc1, 0xc6, 0xcd, 0xc0, 0xcb, 0xc8, 0xc6, 0xcd, + 0xbc, 0xba, 0xb1, 0xbf, 0xba, 0xb4, 0xbf, 0xb2, 0xb9, 0xb7, 0xb2, 0xbc, + 0xb6, 0xb9, 0xb8, 0xb5, 0xb0, 0xb6, 0xbd, 0xb1, 0xb3, 0xbd, 0xb4, 0xbe, + 0xbe, 0xb0, 0xb7, 0xbb, 0xb5, 0xb3, 0xbb, 0xb8, 0xb9, 0xb4, 0xbe, 0xb3, + 0xbf, 0xb2, 0xb5, 0xbc, 0xb2, 0xb9, 0xb8, 0xb5, 0xbc, 0xbf, 0xb3, 0xba, + 0xb7, 0xbb, 0xb0, 0xbe, 0xb4, 0xb1, 0xba, 0xb7, 0xb1, 0xb6, 0xbd, 0xb0, + 0xbb, 0xb8, 0xb6, 0xbd, 0x4c, 0x4a, 0x41, 0x4f, 0x4a, 0x44, 0x4f, 0x42, + 0x49, 0x47, 0x42, 0x4c, 0x46, 0x49, 0x48, 0x45, 0x40, 0x46, 0x4d, 0x41, + 0x43, 0x4d, 0x44, 0x4e, 0x4e, 0x40, 0x47, 0x4b, 0x45, 0x43, 0x4b, 0x48, + 0x49, 0x44, 0x4e, 0x43, 0x4f, 0x42, 0x45, 0x4c, 0x42, 0x49, 0x48, 0x45, + 0x4c, 0x4f, 0x43, 0x4a, 0x47, 0x4b, 0x40, 0x4e, 0x44, 0x41, 0x4a, 0x47, + 0x41, 0x46, 0x4d, 0x40, 0x4b, 0x48, 0x46, 0x4d, 0x2c, 0x2a, 0x21, 0x2f, + 0x2a, 0x24, 0x2f, 0x22, 0x29, 0x27, 0x22, 0x2c, 0x26, 0x29, 0x28, 0x25, + 0x20, 0x26, 0x2d, 0x21, 0x23, 0x2d, 0x24, 0x2e, 0x2e, 0x20, 0x27, 0x2b, + 0x25, 0x23, 0x2b, 0x28, 0x29, 0x24, 0x2e, 0x23, 0x2f, 0x22, 0x25, 0x2c, + 0x22, 0x29, 0x28, 0x25, 0x2c, 0x2f, 0x23, 0x2a, 0x27, 0x2b, 0x20, 0x2e, + 0x24, 0x21, 0x2a, 0x27, 0x21, 0x26, 0x2d, 0x20, 0x2b, 0x28, 0x26, 0x2d, + 0x1c, 0x1a, 0x11, 0x1f, 0x1a, 0x14, 0x1f, 0x12, 0x19, 0x17, 0x12, 0x1c, + 0x16, 0x19, 0x18, 0x15, 0x10, 0x16, 0x1d, 0x11, 0x13, 0x1d, 0x14, 0x1e, + 0x1e, 0x10, 0x17, 0x1b, 0x15, 0x13, 0x1b, 0x18, 0x19, 0x14, 0x1e, 0x13, + 0x1f, 0x12, 0x15, 0x1c, 0x12, 0x19, 0x18, 0x15, 0x1c, 0x1f, 0x13, 0x1a, + 0x17, 0x1b, 0x10, 0x1e, 0x14, 0x11, 0x1a, 0x17, 0x11, 0x16, 0x1d, 0x10, + 0x1b, 0x18, 0x16, 0x1d, 0xcc, 0xca, 0xc1, 0xcf, 0xca, 0xc4, 0xcf, 0xc2, + 0xc9, 0xc7, 0xc2, 0xcc, 0xc6, 0xc9, 0xc8, 0xc5, 0xc0, 0xc6, 0xcd, 0xc1, + 0xc3, 0xcd, 0xc4, 0xce, 0xce, 0xc0, 0xc7, 0xcb, 0xc5, 0xc3, 0xcb, 0xc8, + 0xc9, 0xc4, 0xce, 0xc3, 0xcf, 0xc2, 0xc5, 0xcc, 0xc2, 0xc9, 0xc8, 0xc5, + 0xcc, 0xcf, 0xc3, 0xca, 0xc7, 0xcb, 0xc0, 0xce, 0xc4, 0xc1, 0xca, 0xc7, + 0xc1, 0xc6, 0xcd, 0xc0, 0xcb, 0xc8, 0xc6, 0xcd, 0x7c, 0x7a, 0x71, 0x7f, + 0x7a, 0x74, 0x7f, 0x72, 0x79, 0x77, 0x72, 0x7c, 0x76, 0x79, 0x78, 0x75, + 0x70, 0x76, 0x7d, 0x71, 0x73, 0x7d, 0x74, 0x7e, 0x7e, 0x70, 0x77, 0x7b, + 0x75, 0x73, 0x7b, 0x78, 0x79, 0x74, 0x7e, 0x73, 0x7f, 0x72, 0x75, 0x7c, + 0x72, 0x79, 0x78, 0x75, 0x7c, 0x7f, 0x73, 0x7a, 0x77, 0x7b, 0x70, 0x7e, + 0x74, 0x71, 0x7a, 0x77, 0x71, 0x76, 0x7d, 0x70, 0x7b, 0x78, 0x76, 0x7d, + 0x4c, 0x4a, 0x41, 0x4f, 0x4a, 0x44, 0x4f, 0x42, 0x49, 0x47, 0x42, 0x4c, + 0x46, 0x49, 0x48, 0x45, 0x40, 0x46, 0x4d, 0x41, 0x43, 0x4d, 0x44, 0x4e, + 0x4e, 0x40, 0x47, 0x4b, 0x45, 0x43, 0x4b, 0x48, 0x49, 0x44, 0x4e, 0x43, + 0x4f, 0x42, 0x45, 0x4c, 0x42, 0x49, 0x48, 0x45, 0x4c, 0x4f, 0x43, 0x4a, + 0x47, 0x4b, 0x40, 0x4e, 0x44, 0x41, 0x4a, 0x47, 0x41, 0x46, 0x4d, 0x40, + 0x4b, 0x48, 0x46, 0x4d, 0xac, 0xaa, 0xa1, 0xaf, 0xaa, 0xa4, 0xaf, 0xa2, + 0xa9, 0xa7, 0xa2, 0xac, 0xa6, 0xa9, 0xa8, 0xa5, 0xa0, 0xa6, 0xad, 0xa1, + 0xa3, 0xad, 0xa4, 0xae, 0xae, 0xa0, 0xa7, 0xab, 0xa5, 0xa3, 0xab, 0xa8, + 0xa9, 0xa4, 0xae, 0xa3, 0xaf, 0xa2, 0xa5, 0xac, 0xa2, 0xa9, 0xa8, 0xa5, + 0xac, 0xaf, 0xa3, 0xaa, 0xa7, 0xab, 0xa0, 0xae, 0xa4, 0xa1, 0xaa, 0xa7, + 0xa1, 0xa6, 0xad, 0xa0, 0xab, 0xa8, 0xa6, 0xad, 0x7c, 0x7a, 0x71, 0x7f, + 0x7a, 0x74, 0x7f, 0x72, 0x79, 0x77, 0x72, 0x7c, 0x76, 0x79, 0x78, 0x75, + 0x70, 0x76, 0x7d, 0x71, 0x73, 0x7d, 0x74, 0x7e, 0x7e, 0x70, 0x77, 0x7b, + 0x75, 0x73, 0x7b, 0x78, 0x79, 0x74, 0x7e, 0x73, 0x7f, 0x72, 0x75, 0x7c, + 0x72, 0x79, 0x78, 0x75, 0x7c, 0x7f, 0x73, 0x7a, 0x77, 0x7b, 0x70, 0x7e, + 0x74, 0x71, 0x7a, 0x77, 0x71, 0x76, 0x7d, 0x70, 0x7b, 0x78, 0x76, 0x7d, + 0xbc, 0xba, 0xb1, 0xbf, 0xba, 0xb4, 0xbf, 0xb2, 0xb9, 0xb7, 0xb2, 0xbc, + 0xb6, 0xb9, 0xb8, 0xb5, 0xb0, 0xb6, 0xbd, 0xb1, 0xb3, 0xbd, 0xb4, 0xbe, + 0xbe, 0xb0, 0xb7, 0xbb, 0xb5, 0xb3, 0xbb, 0xb8, 0xb9, 0xb4, 0xbe, 0xb3, + 0xbf, 0xb2, 0xb5, 0xbc, 0xb2, 0xb9, 0xb8, 0xb5, 0xbc, 0xbf, 0xb3, 0xba, + 0xb7, 0xbb, 0xb0, 0xbe, 0xb4, 0xb1, 0xba, 0xb7, 0xb1, 0xb6, 0xbd, 0xb0, + 0xbb, 0xb8, 0xb6, 0xbd, 0xdc, 0xda, 0xd1, 0xdf, 0xda, 0xd4, 0xdf, 0xd2, + 0xd9, 0xd7, 0xd2, 0xdc, 0xd6, 0xd9, 0xd8, 0xd5, 0xd0, 0xd6, 0xdd, 0xd1, + 0xd3, 0xdd, 0xd4, 0xde, 0xde, 0xd0, 0xd7, 0xdb, 0xd5, 0xd3, 0xdb, 0xd8, + 0xd9, 0xd4, 0xde, 0xd3, 0xdf, 0xd2, 0xd5, 0xdc, 0xd2, 0xd9, 0xd8, 0xd5, + 0xdc, 0xdf, 0xd3, 0xda, 0xd7, 0xdb, 0xd0, 0xde, 0xd4, 0xd1, 0xda, 0xd7, + 0xd1, 0xd6, 0xdd, 0xd0, 0xdb, 0xd8, 0xd6, 0xdd, 0x6c, 0x6a, 0x61, 0x6f, + 0x6a, 0x64, 0x6f, 0x62, 0x69, 0x67, 0x62, 0x6c, 0x66, 0x69, 0x68, 0x65, + 0x60, 0x66, 0x6d, 0x61, 0x63, 0x6d, 0x64, 0x6e, 0x6e, 0x60, 0x67, 0x6b, + 0x65, 0x63, 0x6b, 0x68, 0x69, 0x64, 0x6e, 0x63, 0x6f, 0x62, 0x65, 0x6c, + 0x62, 0x69, 0x68, 0x65, 0x6c, 0x6f, 0x63, 0x6a, 0x67, 0x6b, 0x60, 0x6e, + 0x64, 0x61, 0x6a, 0x67, 0x61, 0x66, 0x6d, 0x60, 0x6b, 0x68, 0x66, 0x6d, + 0x1c, 0x1a, 0x11, 0x1f, 0x1a, 0x14, 0x1f, 0x12, 0x19, 0x17, 0x12, 0x1c, + 0x16, 0x19, 0x18, 0x15, 0x10, 0x16, 0x1d, 0x11, 0x13, 0x1d, 0x14, 0x1e, + 0x1e, 0x10, 0x17, 0x1b, 0x15, 0x13, 0x1b, 0x18, 0x19, 0x14, 0x1e, 0x13, + 0x1f, 0x12, 0x15, 0x1c, 0x12, 0x19, 0x18, 0x15, 0x1c, 0x1f, 0x13, 0x1a, + 0x17, 0x1b, 0x10, 0x1e, 0x14, 0x11, 0x1a, 0x17, 0x11, 0x16, 0x1d, 0x10, + 0x1b, 0x18, 0x16, 0x1d, 0x8c, 0x8a, 0x81, 0x8f, 0x8a, 0x84, 0x8f, 0x82, + 0x89, 0x87, 0x82, 0x8c, 0x86, 0x89, 0x88, 0x85, 0x80, 0x86, 0x8d, 0x81, + 0x83, 0x8d, 0x84, 0x8e, 0x8e, 0x80, 0x87, 0x8b, 0x85, 0x83, 0x8b, 0x88, + 0x89, 0x84, 0x8e, 0x83, 0x8f, 0x82, 0x85, 0x8c, 0x82, 0x89, 0x88, 0x85, + 0x8c, 0x8f, 0x83, 0x8a, 0x87, 0x8b, 0x80, 0x8e, 0x84, 0x81, 0x8a, 0x87, + 0x81, 0x86, 0x8d, 0x80, 0x8b, 0x88, 0x86, 0x8d, 0x5c, 0x5a, 0x51, 0x5f, + 0x5a, 0x54, 0x5f, 0x52, 0x59, 0x57, 0x52, 0x5c, 0x56, 0x59, 0x58, 0x55, + 0x50, 0x56, 0x5d, 0x51, 0x53, 0x5d, 0x54, 0x5e, 0x5e, 0x50, 0x57, 0x5b, + 0x55, 0x53, 0x5b, 0x58, 0x59, 0x54, 0x5e, 0x53, 0x5f, 0x52, 0x55, 0x5c, + 0x52, 0x59, 0x58, 0x55, 0x5c, 0x5f, 0x53, 0x5a, 0x57, 0x5b, 0x50, 0x5e, + 0x54, 0x51, 0x5a, 0x57, 0x51, 0x56, 0x5d, 0x50, 0x5b, 0x58, 0x56, 0x5d, + 0x5c, 0x5a, 0x51, 0x5f, 0x5a, 0x54, 0x5f, 0x52, 0x59, 0x57, 0x52, 0x5c, + 0x56, 0x59, 0x58, 0x55, 0x50, 0x56, 0x5d, 0x51, 0x53, 0x5d, 0x54, 0x5e, + 0x5e, 0x50, 0x57, 0x5b, 0x55, 0x53, 0x5b, 0x58, 0x59, 0x54, 0x5e, 0x53, + 0x5f, 0x52, 0x55, 0x5c, 0x52, 0x59, 0x58, 0x55, 0x5c, 0x5f, 0x53, 0x5a, + 0x57, 0x5b, 0x50, 0x5e, 0x54, 0x51, 0x5a, 0x57, 0x51, 0x56, 0x5d, 0x50, + 0x5b, 0x58, 0x56, 0x5d, 0x0c, 0x0a, 0x01, 0x0f, 0x0a, 0x04, 0x0f, 0x02, + 0x09, 0x07, 0x02, 0x0c, 0x06, 0x09, 0x08, 0x05, 0x00, 0x06, 0x0d, 0x01, + 0x03, 0x0d, 0x04, 0x0e, 0x0e, 0x00, 0x07, 0x0b, 0x05, 0x03, 0x0b, 0x08, + 0x09, 0x04, 0x0e, 0x03, 0x0f, 0x02, 0x05, 0x0c, 0x02, 0x09, 0x08, 0x05, + 0x0c, 0x0f, 0x03, 0x0a, 0x07, 0x0b, 0x00, 0x0e, 0x04, 0x01, 0x0a, 0x07, + 0x01, 0x06, 0x0d, 0x00, 0x0b, 0x08, 0x06, 0x0d, 0x3c, 0x3a, 0x31, 0x3f, + 0x3a, 0x34, 0x3f, 0x32, 0x39, 0x37, 0x32, 0x3c, 0x36, 0x39, 0x38, 0x35, + 0x30, 0x36, 0x3d, 0x31, 0x33, 0x3d, 0x34, 0x3e, 0x3e, 0x30, 0x37, 0x3b, + 0x35, 0x33, 0x3b, 0x38, 0x39, 0x34, 0x3e, 0x33, 0x3f, 0x32, 0x35, 0x3c, + 0x32, 0x39, 0x38, 0x35, 0x3c, 0x3f, 0x33, 0x3a, 0x37, 0x3b, 0x30, 0x3e, + 0x34, 0x31, 0x3a, 0x37, 0x31, 0x36, 0x3d, 0x30, 0x3b, 0x38, 0x36, 0x3d, + 0xfc, 0xfa, 0xf1, 0xff, 0xfa, 0xf4, 0xff, 0xf2, 0xf9, 0xf7, 0xf2, 0xfc, + 0xf6, 0xf9, 0xf8, 0xf5, 0xf0, 0xf6, 0xfd, 0xf1, 0xf3, 0xfd, 0xf4, 0xfe, + 0xfe, 0xf0, 0xf7, 0xfb, 0xf5, 0xf3, 0xfb, 0xf8, 0xf9, 0xf4, 0xfe, 0xf3, + 0xff, 0xf2, 0xf5, 0xfc, 0xf2, 0xf9, 0xf8, 0xf5, 0xfc, 0xff, 0xf3, 0xfa, + 0xf7, 0xfb, 0xf0, 0xfe, 0xf4, 0xf1, 0xfa, 0xf7, 0xf1, 0xf6, 0xfd, 0xf0, + 0xfb, 0xf8, 0xf6, 0xfd, 0xfc, 0xfa, 0xf1, 0xff, 0xfa, 0xf4, 0xff, 0xf2, + 0xf9, 0xf7, 0xf2, 0xfc, 0xf6, 0xf9, 0xf8, 0xf5, 0xf0, 0xf6, 0xfd, 0xf1, + 0xf3, 0xfd, 0xf4, 0xfe, 0xfe, 0xf0, 0xf7, 0xfb, 0xf5, 0xf3, 0xfb, 0xf8, + 0xf9, 0xf4, 0xfe, 0xf3, 0xff, 0xf2, 0xf5, 0xfc, 0xf2, 0xf9, 0xf8, 0xf5, + 0xfc, 0xff, 0xf3, 0xfa, 0xf7, 0xfb, 0xf0, 0xfe, 0xf4, 0xf1, 0xfa, 0xf7, + 0xf1, 0xf6, 0xfd, 0xf0, 0xfb, 0xf8, 0xf6, 0xfd, 0xac, 0xaa, 0xa1, 0xaf, + 0xaa, 0xa4, 0xaf, 0xa2, 0xa9, 0xa7, 0xa2, 0xac, 0xa6, 0xa9, 0xa8, 0xa5, + 0xa0, 0xa6, 0xad, 0xa1, 0xa3, 0xad, 0xa4, 0xae, 0xae, 0xa0, 0xa7, 0xab, + 0xa5, 0xa3, 0xab, 0xa8, 0xa9, 0xa4, 0xae, 0xa3, 0xaf, 0xa2, 0xa5, 0xac, + 0xa2, 0xa9, 0xa8, 0xa5, 0xac, 0xaf, 0xa3, 0xaa, 0xa7, 0xab, 0xa0, 0xae, + 0xa4, 0xa1, 0xaa, 0xa7, 0xa1, 0xa6, 0xad, 0xa0, 0xab, 0xa8, 0xa6, 0xad, + 0xdc, 0xda, 0xd1, 0xdf, 0xda, 0xd4, 0xdf, 0xd2, 0xd9, 0xd7, 0xd2, 0xdc, + 0xd6, 0xd9, 0xd8, 0xd5, 0xd0, 0xd6, 0xdd, 0xd1, 0xd3, 0xdd, 0xd4, 0xde, + 0xde, 0xd0, 0xd7, 0xdb, 0xd5, 0xd3, 0xdb, 0xd8, 0xd9, 0xd4, 0xde, 0xd3, + 0xdf, 0xd2, 0xd5, 0xdc, 0xd2, 0xd9, 0xd8, 0xd5, 0xdc, 0xdf, 0xd3, 0xda, + 0xd7, 0xdb, 0xd0, 0xde, 0xd4, 0xd1, 0xda, 0xd7, 0xd1, 0xd6, 0xdd, 0xd0, + 0xdb, 0xd8, 0xd6, 0xdd, 0x3c, 0x3a, 0x31, 0x3f, 0x3a, 0x34, 0x3f, 0x32, + 0x39, 0x37, 0x32, 0x3c, 0x36, 0x39, 0x38, 0x35, 0x30, 0x36, 0x3d, 0x31, + 0x33, 0x3d, 0x34, 0x3e, 0x3e, 0x30, 0x37, 0x3b, 0x35, 0x33, 0x3b, 0x38, + 0x39, 0x34, 0x3e, 0x33, 0x3f, 0x32, 0x35, 0x3c, 0x32, 0x39, 0x38, 0x35, + 0x3c, 0x3f, 0x33, 0x3a, 0x37, 0x3b, 0x30, 0x3e, 0x34, 0x31, 0x3a, 0x37, + 0x31, 0x36, 0x3d, 0x30, 0x3b, 0x38, 0x36, 0x3d, 0x0c, 0x0a, 0x01, 0x0f, + 0x0a, 0x04, 0x0f, 0x02, 0x09, 0x07, 0x02, 0x0c, 0x06, 0x09, 0x08, 0x05, + 0x00, 0x06, 0x0d, 0x01, 0x03, 0x0d, 0x04, 0x0e, 0x0e, 0x00, 0x07, 0x0b, + 0x05, 0x03, 0x0b, 0x08, 0x09, 0x04, 0x0e, 0x03, 0x0f, 0x02, 0x05, 0x0c, + 0x02, 0x09, 0x08, 0x05, 0x0c, 0x0f, 0x03, 0x0a, 0x07, 0x0b, 0x00, 0x0e, + 0x04, 0x01, 0x0a, 0x07, 0x01, 0x06, 0x0d, 0x00, 0x0b, 0x08, 0x06, 0x0d, + 0x9c, 0x9a, 0x91, 0x9f, 0x9a, 0x94, 0x9f, 0x92, 0x99, 0x97, 0x92, 0x9c, + 0x96, 0x99, 0x98, 0x95, 0x90, 0x96, 0x9d, 0x91, 0x93, 0x9d, 0x94, 0x9e, + 0x9e, 0x90, 0x97, 0x9b, 0x95, 0x93, 0x9b, 0x98, 0x99, 0x94, 0x9e, 0x93, + 0x9f, 0x92, 0x95, 0x9c, 0x92, 0x99, 0x98, 0x95, 0x9c, 0x9f, 0x93, 0x9a, + 0x97, 0x9b, 0x90, 0x9e, 0x94, 0x91, 0x9a, 0x97, 0x91, 0x96, 0x9d, 0x90, + 0x9b, 0x98, 0x96, 0x9d, 0xec, 0xea, 0xe1, 0xef, 0xea, 0xe4, 0xef, 0xe2, + 0xe9, 0xe7, 0xe2, 0xec, 0xe6, 0xe9, 0xe8, 0xe5, 0xe0, 0xe6, 0xed, 0xe1, + 0xe3, 0xed, 0xe4, 0xee, 0xee, 0xe0, 0xe7, 0xeb, 0xe5, 0xe3, 0xeb, 0xe8, + 0xe9, 0xe4, 0xee, 0xe3, 0xef, 0xe2, 0xe5, 0xec, 0xe2, 0xe9, 0xe8, 0xe5, + 0xec, 0xef, 0xe3, 0xea, 0xe7, 0xeb, 0xe0, 0xee, 0xe4, 0xe1, 0xea, 0xe7, + 0xe1, 0xe6, 0xed, 0xe0, 0xeb, 0xe8, 0xe6, 0xed, 0x8c, 0x8a, 0x81, 0x8f, + 0x8a, 0x84, 0x8f, 0x82, 0x89, 0x87, 0x82, 0x8c, 0x86, 0x89, 0x88, 0x85, + 0x80, 0x86, 0x8d, 0x81, 0x83, 0x8d, 0x84, 0x8e, 0x8e, 0x80, 0x87, 0x8b, + 0x85, 0x83, 0x8b, 0x88, 0x89, 0x84, 0x8e, 0x83, 0x8f, 0x82, 0x85, 0x8c, + 0x82, 0x89, 0x88, 0x85, 0x8c, 0x8f, 0x83, 0x8a, 0x87, 0x8b, 0x80, 0x8e, + 0x84, 0x81, 0x8a, 0x87, 0x81, 0x86, 0x8d, 0x80, 0x8b, 0x88, 0x86, 0x8d, + 0x9c, 0x9a, 0x91, 0x9f, 0x9a, 0x94, 0x9f, 0x92, 0x99, 0x97, 0x92, 0x9c, + 0x96, 0x99, 0x98, 0x95, 0x90, 0x96, 0x9d, 0x91, 0x93, 0x9d, 0x94, 0x9e, + 0x9e, 0x90, 0x97, 0x9b, 0x95, 0x93, 0x9b, 0x98, 0x99, 0x94, 0x9e, 0x93, + 0x9f, 0x92, 0x95, 0x9c, 0x92, 0x99, 0x98, 0x95, 0x9c, 0x9f, 0x93, 0x9a, + 0x97, 0x9b, 0x90, 0x9e, 0x94, 0x91, 0x9a, 0x97, 0x91, 0x96, 0x9d, 0x90, + 0x9b, 0x98, 0x96, 0x9d, 0x6c, 0x6a, 0x61, 0x6f, 0x6a, 0x64, 0x6f, 0x62, + 0x69, 0x67, 0x62, 0x6c, 0x66, 0x69, 0x68, 0x65, 0x60, 0x66, 0x6d, 0x61, + 0x63, 0x6d, 0x64, 0x6e, 0x6e, 0x60, 0x67, 0x6b, 0x65, 0x63, 0x6b, 0x68, + 0x69, 0x64, 0x6e, 0x63, 0x6f, 0x62, 0x65, 0x6c, 0x62, 0x69, 0x68, 0x65, + 0x6c, 0x6f, 0x63, 0x6a, 0x67, 0x6b, 0x60, 0x6e, 0x64, 0x61, 0x6a, 0x67, + 0x61, 0x66, 0x6d, 0x60, 0x6b, 0x68, 0x66, 0x6d, 0x4c, 0x4a, 0x41, 0x4f, + 0x4a, 0x44, 0x4f, 0x42, 0x49, 0x47, 0x42, 0x4c, 0x46, 0x49, 0x48, 0x45, + 0x40, 0x46, 0x4d, 0x41, 0x43, 0x4d, 0x44, 0x4e, 0x4e, 0x40, 0x47, 0x4b, + 0x45, 0x43, 0x4b, 0x48, 0x49, 0x44, 0x4e, 0x43, 0x4f, 0x42, 0x45, 0x4c, + 0x42, 0x49, 0x48, 0x45, 0x4c, 0x4f, 0x43, 0x4a, 0x47, 0x4b, 0x40, 0x4e, + 0x44, 0x41, 0x4a, 0x47, 0x41, 0x46, 0x4d, 0x40, 0x4b, 0x48, 0x46, 0x4d, + 0xbc, 0xba, 0xb1, 0xbf, 0xba, 0xb4, 0xbf, 0xb2, 0xb9, 0xb7, 0xb2, 0xbc, + 0xb6, 0xb9, 0xb8, 0xb5, 0xb0, 0xb6, 0xbd, 0xb1, 0xb3, 0xbd, 0xb4, 0xbe, + 0xbe, 0xb0, 0xb7, 0xbb, 0xb5, 0xb3, 0xbb, 0xb8, 0xb9, 0xb4, 0xbe, 0xb3, + 0xbf, 0xb2, 0xb5, 0xbc, 0xb2, 0xb9, 0xb8, 0xb5, 0xbc, 0xbf, 0xb3, 0xba, + 0xb7, 0xbb, 0xb0, 0xbe, 0xb4, 0xb1, 0xba, 0xb7, 0xb1, 0xb6, 0xbd, 0xb0, + 0xbb, 0xb8, 0xb6, 0xbd, 0x2c, 0x2a, 0x21, 0x2f, 0x2a, 0x24, 0x2f, 0x22, + 0x29, 0x27, 0x22, 0x2c, 0x26, 0x29, 0x28, 0x25, 0x20, 0x26, 0x2d, 0x21, + 0x23, 0x2d, 0x24, 0x2e, 0x2e, 0x20, 0x27, 0x2b, 0x25, 0x23, 0x2b, 0x28, + 0x29, 0x24, 0x2e, 0x23, 0x2f, 0x22, 0x25, 0x2c, 0x22, 0x29, 0x28, 0x25, + 0x2c, 0x2f, 0x23, 0x2a, 0x27, 0x2b, 0x20, 0x2e, 0x24, 0x21, 0x2a, 0x27, + 0x21, 0x26, 0x2d, 0x20, 0x2b, 0x28, 0x26, 0x2d, 0x8c, 0x8a, 0x81, 0x8f, + 0x8a, 0x84, 0x8f, 0x82, 0x89, 0x87, 0x82, 0x8c, 0x86, 0x89, 0x88, 0x85, + 0x80, 0x86, 0x8d, 0x81, 0x83, 0x8d, 0x84, 0x8e, 0x8e, 0x80, 0x87, 0x8b, + 0x85, 0x83, 0x8b, 0x88, 0x89, 0x84, 0x8e, 0x83, 0x8f, 0x82, 0x85, 0x8c, + 0x82, 0x89, 0x88, 0x85, 0x8c, 0x8f, 0x83, 0x8a, 0x87, 0x8b, 0x80, 0x8e, + 0x84, 0x81, 0x8a, 0x87, 0x81, 0x86, 0x8d, 0x80, 0x8b, 0x88, 0x86, 0x8d, + 0x1c, 0x1a, 0x11, 0x1f, 0x1a, 0x14, 0x1f, 0x12, 0x19, 0x17, 0x12, 0x1c, + 0x16, 0x19, 0x18, 0x15, 0x10, 0x16, 0x1d, 0x11, 0x13, 0x1d, 0x14, 0x1e, + 0x1e, 0x10, 0x17, 0x1b, 0x15, 0x13, 0x1b, 0x18, 0x19, 0x14, 0x1e, 0x13, + 0x1f, 0x12, 0x15, 0x1c, 0x12, 0x19, 0x18, 0x15, 0x1c, 0x1f, 0x13, 0x1a, + 0x17, 0x1b, 0x10, 0x1e, 0x14, 0x11, 0x1a, 0x17, 0x11, 0x16, 0x1d, 0x10, + 0x1b, 0x18, 0x16, 0x1d, 0xcc, 0xca, 0xc1, 0xcf, 0xca, 0xc4, 0xcf, 0xc2, + 0xc9, 0xc7, 0xc2, 0xcc, 0xc6, 0xc9, 0xc8, 0xc5, 0xc0, 0xc6, 0xcd, 0xc1, + 0xc3, 0xcd, 0xc4, 0xce, 0xce, 0xc0, 0xc7, 0xcb, 0xc5, 0xc3, 0xcb, 0xc8, + 0xc9, 0xc4, 0xce, 0xc3, 0xcf, 0xc2, 0xc5, 0xcc, 0xc2, 0xc9, 0xc8, 0xc5, + 0xcc, 0xcf, 0xc3, 0xca, 0xc7, 0xcb, 0xc0, 0xce, 0xc4, 0xc1, 0xca, 0xc7, + 0xc1, 0xc6, 0xcd, 0xc0, 0xcb, 0xc8, 0xc6, 0xcd, 0xbc, 0xba, 0xb1, 0xbf, + 0xba, 0xb4, 0xbf, 0xb2, 0xb9, 0xb7, 0xb2, 0xbc, 0xb6, 0xb9, 0xb8, 0xb5, + 0xb0, 0xb6, 0xbd, 0xb1, 0xb3, 0xbd, 0xb4, 0xbe, 0xbe, 0xb0, 0xb7, 0xbb, + 0xb5, 0xb3, 0xbb, 0xb8, 0xb9, 0xb4, 0xbe, 0xb3, 0xbf, 0xb2, 0xb5, 0xbc, + 0xb2, 0xb9, 0xb8, 0xb5, 0xbc, 0xbf, 0xb3, 0xba, 0xb7, 0xbb, 0xb0, 0xbe, + 0xb4, 0xb1, 0xba, 0xb7, 0xb1, 0xb6, 0xbd, 0xb0, 0xbb, 0xb8, 0xb6, 0xbd, + 0x7c, 0x7a, 0x71, 0x7f, 0x7a, 0x74, 0x7f, 0x72, 0x79, 0x77, 0x72, 0x7c, + 0x76, 0x79, 0x78, 0x75, 0x70, 0x76, 0x7d, 0x71, 0x73, 0x7d, 0x74, 0x7e, + 0x7e, 0x70, 0x77, 0x7b, 0x75, 0x73, 0x7b, 0x78, 0x79, 0x74, 0x7e, 0x73, + 0x7f, 0x72, 0x75, 0x7c, 0x72, 0x79, 0x78, 0x75, 0x7c, 0x7f, 0x73, 0x7a, + 0x77, 0x7b, 0x70, 0x7e, 0x74, 0x71, 0x7a, 0x77, 0x71, 0x76, 0x7d, 0x70, + 0x7b, 0x78, 0x76, 0x7d, 0xac, 0xaa, 0xa1, 0xaf, 0xaa, 0xa4, 0xaf, 0xa2, + 0xa9, 0xa7, 0xa2, 0xac, 0xa6, 0xa9, 0xa8, 0xa5, 0xa0, 0xa6, 0xad, 0xa1, + 0xa3, 0xad, 0xa4, 0xae, 0xae, 0xa0, 0xa7, 0xab, 0xa5, 0xa3, 0xab, 0xa8, + 0xa9, 0xa4, 0xae, 0xa3, 0xaf, 0xa2, 0xa5, 0xac, 0xa2, 0xa9, 0xa8, 0xa5, + 0xac, 0xaf, 0xa3, 0xaa, 0xa7, 0xab, 0xa0, 0xae, 0xa4, 0xa1, 0xaa, 0xa7, + 0xa1, 0xa6, 0xad, 0xa0, 0xab, 0xa8, 0xa6, 0xad, 0x1c, 0x1a, 0x11, 0x1f, + 0x1a, 0x14, 0x1f, 0x12, 0x19, 0x17, 0x12, 0x1c, 0x16, 0x19, 0x18, 0x15, + 0x10, 0x16, 0x1d, 0x11, 0x13, 0x1d, 0x14, 0x1e, 0x1e, 0x10, 0x17, 0x1b, + 0x15, 0x13, 0x1b, 0x18, 0x19, 0x14, 0x1e, 0x13, 0x1f, 0x12, 0x15, 0x1c, + 0x12, 0x19, 0x18, 0x15, 0x1c, 0x1f, 0x13, 0x1a, 0x17, 0x1b, 0x10, 0x1e, + 0x14, 0x11, 0x1a, 0x17, 0x11, 0x16, 0x1d, 0x10, 0x1b, 0x18, 0x16, 0x1d, + 0xdc, 0xda, 0xd1, 0xdf, 0xda, 0xd4, 0xdf, 0xd2, 0xd9, 0xd7, 0xd2, 0xdc, + 0xd6, 0xd9, 0xd8, 0xd5, 0xd0, 0xd6, 0xdd, 0xd1, 0xd3, 0xdd, 0xd4, 0xde, + 0xde, 0xd0, 0xd7, 0xdb, 0xd5, 0xd3, 0xdb, 0xd8, 0xd9, 0xd4, 0xde, 0xd3, + 0xdf, 0xd2, 0xd5, 0xdc, 0xd2, 0xd9, 0xd8, 0xd5, 0xdc, 0xdf, 0xd3, 0xda, + 0xd7, 0xdb, 0xd0, 0xde, 0xd4, 0xd1, 0xda, 0xd7, 0xd1, 0xd6, 0xdd, 0xd0, + 0xdb, 0xd8, 0xd6, 0xdd, 0xec, 0xea, 0xe1, 0xef, 0xea, 0xe4, 0xef, 0xe2, + 0xe9, 0xe7, 0xe2, 0xec, 0xe6, 0xe9, 0xe8, 0xe5, 0xe0, 0xe6, 0xed, 0xe1, + 0xe3, 0xed, 0xe4, 0xee, 0xee, 0xe0, 0xe7, 0xeb, 0xe5, 0xe3, 0xeb, 0xe8, + 0xe9, 0xe4, 0xee, 0xe3, 0xef, 0xe2, 0xe5, 0xec, 0xe2, 0xe9, 0xe8, 0xe5, + 0xec, 0xef, 0xe3, 0xea, 0xe7, 0xeb, 0xe0, 0xee, 0xe4, 0xe1, 0xea, 0xe7, + 0xe1, 0xe6, 0xed, 0xe0, 0xeb, 0xe8, 0xe6, 0xed, 0x7c, 0x7a, 0x71, 0x7f, + 0x7a, 0x74, 0x7f, 0x72, 0x79, 0x77, 0x72, 0x7c, 0x76, 0x79, 0x78, 0x75, + 0x70, 0x76, 0x7d, 0x71, 0x73, 0x7d, 0x74, 0x7e, 0x7e, 0x70, 0x77, 0x7b, + 0x75, 0x73, 0x7b, 0x78, 0x79, 0x74, 0x7e, 0x73, 0x7f, 0x72, 0x75, 0x7c, + 0x72, 0x79, 0x78, 0x75, 0x7c, 0x7f, 0x73, 0x7a, 0x77, 0x7b, 0x70, 0x7e, + 0x74, 0x71, 0x7a, 0x77, 0x71, 0x76, 0x7d, 0x70, 0x7b, 0x78, 0x76, 0x7d, + 0x2c, 0x2a, 0x21, 0x2f, 0x2a, 0x24, 0x2f, 0x22, 0x29, 0x27, 0x22, 0x2c, + 0x26, 0x29, 0x28, 0x25, 0x20, 0x26, 0x2d, 0x21, 0x23, 0x2d, 0x24, 0x2e, + 0x2e, 0x20, 0x27, 0x2b, 0x25, 0x23, 0x2b, 0x28, 0x29, 0x24, 0x2e, 0x23, + 0x2f, 0x22, 0x25, 0x2c, 0x22, 0x29, 0x28, 0x25, 0x2c, 0x2f, 0x23, 0x2a, + 0x27, 0x2b, 0x20, 0x2e, 0x24, 0x21, 0x2a, 0x27, 0x21, 0x26, 0x2d, 0x20, + 0x2b, 0x28, 0x26, 0x2d, 0x8c, 0x8a, 0x81, 0x8f, 0x8a, 0x84, 0x8f, 0x82, + 0x89, 0x87, 0x82, 0x8c, 0x86, 0x89, 0x88, 0x85, 0x80, 0x86, 0x8d, 0x81, + 0x83, 0x8d, 0x84, 0x8e, 0x8e, 0x80, 0x87, 0x8b, 0x85, 0x83, 0x8b, 0x88, + 0x89, 0x84, 0x8e, 0x83, 0x8f, 0x82, 0x85, 0x8c, 0x82, 0x89, 0x88, 0x85, + 0x8c, 0x8f, 0x83, 0x8a, 0x87, 0x8b, 0x80, 0x8e, 0x84, 0x81, 0x8a, 0x87, + 0x81, 0x86, 0x8d, 0x80, 0x8b, 0x88, 0x86, 0x8d, 0xdc, 0xda, 0xd1, 0xdf, + 0xda, 0xd4, 0xdf, 0xd2, 0xd9, 0xd7, 0xd2, 0xdc, 0xd6, 0xd9, 0xd8, 0xd5, + 0xd0, 0xd6, 0xdd, 0xd1, 0xd3, 0xdd, 0xd4, 0xde, 0xde, 0xd0, 0xd7, 0xdb, + 0xd5, 0xd3, 0xdb, 0xd8, 0xd9, 0xd4, 0xde, 0xd3, 0xdf, 0xd2, 0xd5, 0xdc, + 0xd2, 0xd9, 0xd8, 0xd5, 0xdc, 0xdf, 0xd3, 0xda, 0xd7, 0xdb, 0xd0, 0xde, + 0xd4, 0xd1, 0xda, 0xd7, 0xd1, 0xd6, 0xdd, 0xd0, 0xdb, 0xd8, 0xd6, 0xdd, + 0xfc, 0xfa, 0xf1, 0xff, 0xfa, 0xf4, 0xff, 0xf2, 0xf9, 0xf7, 0xf2, 0xfc, + 0xf6, 0xf9, 0xf8, 0xf5, 0xf0, 0xf6, 0xfd, 0xf1, 0xf3, 0xfd, 0xf4, 0xfe, + 0xfe, 0xf0, 0xf7, 0xfb, 0xf5, 0xf3, 0xfb, 0xf8, 0xf9, 0xf4, 0xfe, 0xf3, + 0xff, 0xf2, 0xf5, 0xfc, 0xf2, 0xf9, 0xf8, 0xf5, 0xfc, 0xff, 0xf3, 0xfa, + 0xf7, 0xfb, 0xf0, 0xfe, 0xf4, 0xf1, 0xfa, 0xf7, 0xf1, 0xf6, 0xfd, 0xf0, + 0xfb, 0xf8, 0xf6, 0xfd, 0x6c, 0x6a, 0x61, 0x6f, 0x6a, 0x64, 0x6f, 0x62, + 0x69, 0x67, 0x62, 0x6c, 0x66, 0x69, 0x68, 0x65, 0x60, 0x66, 0x6d, 0x61, + 0x63, 0x6d, 0x64, 0x6e, 0x6e, 0x60, 0x67, 0x6b, 0x65, 0x63, 0x6b, 0x68, + 0x69, 0x64, 0x6e, 0x63, 0x6f, 0x62, 0x65, 0x6c, 0x62, 0x69, 0x68, 0x65, + 0x6c, 0x6f, 0x63, 0x6a, 0x67, 0x6b, 0x60, 0x6e, 0x64, 0x61, 0x6a, 0x67, + 0x61, 0x66, 0x6d, 0x60, 0x6b, 0x68, 0x66, 0x6d, 0x9c, 0x9a, 0x91, 0x9f, + 0x9a, 0x94, 0x9f, 0x92, 0x99, 0x97, 0x92, 0x9c, 0x96, 0x99, 0x98, 0x95, + 0x90, 0x96, 0x9d, 0x91, 0x93, 0x9d, 0x94, 0x9e, 0x9e, 0x90, 0x97, 0x9b, + 0x95, 0x93, 0x9b, 0x98, 0x99, 0x94, 0x9e, 0x93, 0x9f, 0x92, 0x95, 0x9c, + 0x92, 0x99, 0x98, 0x95, 0x9c, 0x9f, 0x93, 0x9a, 0x97, 0x9b, 0x90, 0x9e, + 0x94, 0x91, 0x9a, 0x97, 0x91, 0x96, 0x9d, 0x90, 0x9b, 0x98, 0x96, 0x9d, + 0xfc, 0xfa, 0xf1, 0xff, 0xfa, 0xf4, 0xff, 0xf2, 0xf9, 0xf7, 0xf2, 0xfc, + 0xf6, 0xf9, 0xf8, 0xf5, 0xf0, 0xf6, 0xfd, 0xf1, 0xf3, 0xfd, 0xf4, 0xfe, + 0xfe, 0xf0, 0xf7, 0xfb, 0xf5, 0xf3, 0xfb, 0xf8, 0xf9, 0xf4, 0xfe, 0xf3, + 0xff, 0xf2, 0xf5, 0xfc, 0xf2, 0xf9, 0xf8, 0xf5, 0xfc, 0xff, 0xf3, 0xfa, + 0xf7, 0xfb, 0xf0, 0xfe, 0xf4, 0xf1, 0xfa, 0xf7, 0xf1, 0xf6, 0xfd, 0xf0, + 0xfb, 0xf8, 0xf6, 0xfd, 0xcc, 0xca, 0xc1, 0xcf, 0xca, 0xc4, 0xcf, 0xc2, + 0xc9, 0xc7, 0xc2, 0xcc, 0xc6, 0xc9, 0xc8, 0xc5, 0xc0, 0xc6, 0xcd, 0xc1, + 0xc3, 0xcd, 0xc4, 0xce, 0xce, 0xc0, 0xc7, 0xcb, 0xc5, 0xc3, 0xcb, 0xc8, + 0xc9, 0xc4, 0xce, 0xc3, 0xcf, 0xc2, 0xc5, 0xcc, 0xc2, 0xc9, 0xc8, 0xc5, + 0xcc, 0xcf, 0xc3, 0xca, 0xc7, 0xcb, 0xc0, 0xce, 0xc4, 0xc1, 0xca, 0xc7, + 0xc1, 0xc6, 0xcd, 0xc0, 0xcb, 0xc8, 0xc6, 0xcd, 0x0c, 0x0a, 0x01, 0x0f, + 0x0a, 0x04, 0x0f, 0x02, 0x09, 0x07, 0x02, 0x0c, 0x06, 0x09, 0x08, 0x05, + 0x00, 0x06, 0x0d, 0x01, 0x03, 0x0d, 0x04, 0x0e, 0x0e, 0x00, 0x07, 0x0b, + 0x05, 0x03, 0x0b, 0x08, 0x09, 0x04, 0x0e, 0x03, 0x0f, 0x02, 0x05, 0x0c, + 0x02, 0x09, 0x08, 0x05, 0x0c, 0x0f, 0x03, 0x0a, 0x07, 0x0b, 0x00, 0x0e, + 0x04, 0x01, 0x0a, 0x07, 0x01, 0x06, 0x0d, 0x00, 0x0b, 0x08, 0x06, 0x0d, + 0x5c, 0x5a, 0x51, 0x5f, 0x5a, 0x54, 0x5f, 0x52, 0x59, 0x57, 0x52, 0x5c, + 0x56, 0x59, 0x58, 0x55, 0x50, 0x56, 0x5d, 0x51, 0x53, 0x5d, 0x54, 0x5e, + 0x5e, 0x50, 0x57, 0x5b, 0x55, 0x53, 0x5b, 0x58, 0x59, 0x54, 0x5e, 0x53, + 0x5f, 0x52, 0x55, 0x5c, 0x52, 0x59, 0x58, 0x55, 0x5c, 0x5f, 0x53, 0x5a, + 0x57, 0x5b, 0x50, 0x5e, 0x54, 0x51, 0x5a, 0x57, 0x51, 0x56, 0x5d, 0x50, + 0x5b, 0x58, 0x56, 0x5d, 0x9c, 0x9a, 0x91, 0x9f, 0x9a, 0x94, 0x9f, 0x92, + 0x99, 0x97, 0x92, 0x9c, 0x96, 0x99, 0x98, 0x95, 0x90, 0x96, 0x9d, 0x91, + 0x93, 0x9d, 0x94, 0x9e, 0x9e, 0x90, 0x97, 0x9b, 0x95, 0x93, 0x9b, 0x98, + 0x99, 0x94, 0x9e, 0x93, 0x9f, 0x92, 0x95, 0x9c, 0x92, 0x99, 0x98, 0x95, + 0x9c, 0x9f, 0x93, 0x9a, 0x97, 0x9b, 0x90, 0x9e, 0x94, 0x91, 0x9a, 0x97, + 0x91, 0x96, 0x9d, 0x90, 0x9b, 0x98, 0x96, 0x9d, 0x6c, 0x6a, 0x61, 0x6f, + 0x6a, 0x64, 0x6f, 0x62, 0x69, 0x67, 0x62, 0x6c, 0x66, 0x69, 0x68, 0x65, + 0x60, 0x66, 0x6d, 0x61, 0x63, 0x6d, 0x64, 0x6e, 0x6e, 0x60, 0x67, 0x6b, + 0x65, 0x63, 0x6b, 0x68, 0x69, 0x64, 0x6e, 0x63, 0x6f, 0x62, 0x65, 0x6c, + 0x62, 0x69, 0x68, 0x65, 0x6c, 0x6f, 0x63, 0x6a, 0x67, 0x6b, 0x60, 0x6e, + 0x64, 0x61, 0x6a, 0x67, 0x61, 0x66, 0x6d, 0x60, 0x6b, 0x68, 0x66, 0x6d, + 0xac, 0xaa, 0xa1, 0xaf, 0xaa, 0xa4, 0xaf, 0xa2, 0xa9, 0xa7, 0xa2, 0xac, + 0xa6, 0xa9, 0xa8, 0xa5, 0xa0, 0xa6, 0xad, 0xa1, 0xa3, 0xad, 0xa4, 0xae, + 0xae, 0xa0, 0xa7, 0xab, 0xa5, 0xa3, 0xab, 0xa8, 0xa9, 0xa4, 0xae, 0xa3, + 0xaf, 0xa2, 0xa5, 0xac, 0xa2, 0xa9, 0xa8, 0xa5, 0xac, 0xaf, 0xa3, 0xaa, + 0xa7, 0xab, 0xa0, 0xae, 0xa4, 0xa1, 0xaa, 0xa7, 0xa1, 0xa6, 0xad, 0xa0, + 0xab, 0xa8, 0xa6, 0xad, 0x3c, 0x3a, 0x31, 0x3f, 0x3a, 0x34, 0x3f, 0x32, + 0x39, 0x37, 0x32, 0x3c, 0x36, 0x39, 0x38, 0x35, 0x30, 0x36, 0x3d, 0x31, + 0x33, 0x3d, 0x34, 0x3e, 0x3e, 0x30, 0x37, 0x3b, 0x35, 0x33, 0x3b, 0x38, + 0x39, 0x34, 0x3e, 0x33, 0x3f, 0x32, 0x35, 0x3c, 0x32, 0x39, 0x38, 0x35, + 0x3c, 0x3f, 0x33, 0x3a, 0x37, 0x3b, 0x30, 0x3e, 0x34, 0x31, 0x3a, 0x37, + 0x31, 0x36, 0x3d, 0x30, 0x3b, 0x38, 0x36, 0x3d, 0x4c, 0x4a, 0x41, 0x4f, + 0x4a, 0x44, 0x4f, 0x42, 0x49, 0x47, 0x42, 0x4c, 0x46, 0x49, 0x48, 0x45, + 0x40, 0x46, 0x4d, 0x41, 0x43, 0x4d, 0x44, 0x4e, 0x4e, 0x40, 0x47, 0x4b, + 0x45, 0x43, 0x4b, 0x48, 0x49, 0x44, 0x4e, 0x43, 0x4f, 0x42, 0x45, 0x4c, + 0x42, 0x49, 0x48, 0x45, 0x4c, 0x4f, 0x43, 0x4a, 0x47, 0x4b, 0x40, 0x4e, + 0x44, 0x41, 0x4a, 0x47, 0x41, 0x46, 0x4d, 0x40, 0x4b, 0x48, 0x46, 0x4d, + 0x0c, 0x0a, 0x01, 0x0f, 0x0a, 0x04, 0x0f, 0x02, 0x09, 0x07, 0x02, 0x0c, + 0x06, 0x09, 0x08, 0x05, 0x00, 0x06, 0x0d, 0x01, 0x03, 0x0d, 0x04, 0x0e, + 0x0e, 0x00, 0x07, 0x0b, 0x05, 0x03, 0x0b, 0x08, 0x09, 0x04, 0x0e, 0x03, + 0x0f, 0x02, 0x05, 0x0c, 0x02, 0x09, 0x08, 0x05, 0x0c, 0x0f, 0x03, 0x0a, + 0x07, 0x0b, 0x00, 0x0e, 0x04, 0x01, 0x0a, 0x07, 0x01, 0x06, 0x0d, 0x00, + 0x0b, 0x08, 0x06, 0x0d, 0x5c, 0x5a, 0x51, 0x5f, 0x5a, 0x54, 0x5f, 0x52, + 0x59, 0x57, 0x52, 0x5c, 0x56, 0x59, 0x58, 0x55, 0x50, 0x56, 0x5d, 0x51, + 0x53, 0x5d, 0x54, 0x5e, 0x5e, 0x50, 0x57, 0x5b, 0x55, 0x53, 0x5b, 0x58, + 0x59, 0x54, 0x5e, 0x53, 0x5f, 0x52, 0x55, 0x5c, 0x52, 0x59, 0x58, 0x55, + 0x5c, 0x5f, 0x53, 0x5a, 0x57, 0x5b, 0x50, 0x5e, 0x54, 0x51, 0x5a, 0x57, + 0x51, 0x56, 0x5d, 0x50, 0x5b, 0x58, 0x56, 0x5d, 0xec, 0xea, 0xe1, 0xef, + 0xea, 0xe4, 0xef, 0xe2, 0xe9, 0xe7, 0xe2, 0xec, 0xe6, 0xe9, 0xe8, 0xe5, + 0xe0, 0xe6, 0xed, 0xe1, 0xe3, 0xed, 0xe4, 0xee, 0xee, 0xe0, 0xe7, 0xeb, + 0xe5, 0xe3, 0xeb, 0xe8, 0xe9, 0xe4, 0xee, 0xe3, 0xef, 0xe2, 0xe5, 0xec, + 0xe2, 0xe9, 0xe8, 0xe5, 0xec, 0xef, 0xe3, 0xea, 0xe7, 0xeb, 0xe0, 0xee, + 0xe4, 0xe1, 0xea, 0xe7, 0xe1, 0xe6, 0xed, 0xe0, 0xeb, 0xe8, 0xe6, 0xed, + 0x3c, 0x3a, 0x31, 0x3f, 0x3a, 0x34, 0x3f, 0x32, 0x39, 0x37, 0x32, 0x3c, + 0x36, 0x39, 0x38, 0x35, 0x30, 0x36, 0x3d, 0x31, 0x33, 0x3d, 0x34, 0x3e, + 0x3e, 0x30, 0x37, 0x3b, 0x35, 0x33, 0x3b, 0x38, 0x39, 0x34, 0x3e, 0x33, + 0x3f, 0x32, 0x35, 0x3c, 0x32, 0x39, 0x38, 0x35, 0x3c, 0x3f, 0x33, 0x3a, + 0x37, 0x3b, 0x30, 0x3e, 0x34, 0x31, 0x3a, 0x37, 0x31, 0x36, 0x3d, 0x30, + 0x3b, 0x38, 0x36, 0x3d, + }, + { + 0x4d, 0x41, 0x42, 0x4f, 0x48, 0x4d, 0x44, 0x48, 0x46, 0x4a, 0x4f, 0x43, + 0x4b, 0x47, 0x41, 0x44, 0x4a, 0x4c, 0x49, 0x45, 0x43, 0x46, 0x4e, 0x4b, + 0x45, 0x40, 0x40, 0x4e, 0x4c, 0x49, 0x47, 0x42, 0x47, 0x42, 0x4b, 0x41, + 0x44, 0x4e, 0x41, 0x47, 0x49, 0x44, 0x4c, 0x4a, 0x4e, 0x48, 0x42, 0x4d, + 0x40, 0x4f, 0x46, 0x4c, 0x4a, 0x49, 0x4d, 0x40, 0x4f, 0x43, 0x43, 0x45, + 0x45, 0x46, 0x48, 0x4b, 0xdd, 0xd1, 0xd2, 0xdf, 0xd8, 0xdd, 0xd4, 0xd8, + 0xd6, 0xda, 0xdf, 0xd3, 0xdb, 0xd7, 0xd1, 0xd4, 0xda, 0xdc, 0xd9, 0xd5, + 0xd3, 0xd6, 0xde, 0xdb, 0xd5, 0xd0, 0xd0, 0xde, 0xdc, 0xd9, 0xd7, 0xd2, + 0xd7, 0xd2, 0xdb, 0xd1, 0xd4, 0xde, 0xd1, 0xd7, 0xd9, 0xd4, 0xdc, 0xda, + 0xde, 0xd8, 0xd2, 0xdd, 0xd0, 0xdf, 0xd6, 0xdc, 0xda, 0xd9, 0xdd, 0xd0, + 0xdf, 0xd3, 0xd3, 0xd5, 0xd5, 0xd6, 0xd8, 0xdb, 0xbd, 0xb1, 0xb2, 0xbf, + 0xb8, 0xbd, 0xb4, 0xb8, 0xb6, 0xba, 0xbf, 0xb3, 0xbb, 0xb7, 0xb1, 0xb4, + 0xba, 0xbc, 0xb9, 0xb5, 0xb3, 0xb6, 0xbe, 0xbb, 0xb5, 0xb0, 0xb0, 0xbe, + 0xbc, 0xb9, 0xb7, 0xb2, 0xb7, 0xb2, 0xbb, 0xb1, 0xb4, 0xbe, 0xb1, 0xb7, + 0xb9, 0xb4, 0xbc, 0xba, 0xbe, 0xb8, 0xb2, 0xbd, 0xb0, 0xbf, 0xb6, 0xbc, + 0xba, 0xb9, 0xbd, 0xb0, 0xbf, 0xb3, 0xb3, 0xb5, 0xb5, 0xb6, 0xb8, 0xbb, + 0x0d, 0x01, 0x02, 0x0f, 0x08, 0x0d, 0x04, 0x08, 0x06, 0x0a, 0x0f, 0x03, + 0x0b, 0x07, 0x01, 0x04, 0x0a, 0x0c, 0x09, 0x05, 0x03, 0x06, 0x0e, 0x0b, + 0x05, 0x00, 0x00, 0x0e, 0x0c, 0x09, 0x07, 0x02, 0x07, 0x02, 0x0b, 0x01, + 0x04, 0x0e, 0x01, 0x07, 0x09, 0x04, 0x0c, 0x0a, 0x0e, 0x08, 0x02, 0x0d, + 0x00, 0x0f, 0x06, 0x0c, 0x0a, 0x09, 0x0d, 0x00, 0x0f, 0x03, 0x03, 0x05, + 0x05, 0x06, 0x08, 0x0b, 0x2d, 0x21, 0x22, 0x2f, 0x28, 0x2d, 0x24, 0x28, + 0x26, 0x2a, 0x2f, 0x23, 0x2b, 0x27, 0x21, 0x24, 0x2a, 0x2c, 0x29, 0x25, + 0x23, 0x26, 0x2e, 0x2b, 0x25, 0x20, 0x20, 0x2e, 0x2c, 0x29, 0x27, 0x22, + 0x27, 0x22, 0x2b, 0x21, 0x24, 0x2e, 0x21, 0x27, 0x29, 0x24, 0x2c, 0x2a, + 0x2e, 0x28, 0x22, 0x2d, 0x20, 0x2f, 0x26, 0x2c, 0x2a, 0x29, 0x2d, 0x20, + 0x2f, 0x23, 0x23, 0x25, 0x25, 0x26, 0x28, 0x2b, 0xbd, 0xb1, 0xb2, 0xbf, + 0xb8, 0xbd, 0xb4, 0xb8, 0xb6, 0xba, 0xbf, 0xb3, 0xbb, 0xb7, 0xb1, 0xb4, + 0xba, 0xbc, 0xb9, 0xb5, 0xb3, 0xb6, 0xbe, 0xbb, 0xb5, 0xb0, 0xb0, 0xbe, + 0xbc, 0xb9, 0xb7, 0xb2, 0xb7, 0xb2, 0xbb, 0xb1, 0xb4, 0xbe, 0xb1, 0xb7, + 0xb9, 0xb4, 0xbc, 0xba, 0xbe, 0xb8, 0xb2, 0xbd, 0xb0, 0xbf, 0xb6, 0xbc, + 0xba, 0xb9, 0xbd, 0xb0, 0xbf, 0xb3, 0xb3, 0xb5, 0xb5, 0xb6, 0xb8, 0xbb, + 0xed, 0xe1, 0xe2, 0xef, 0xe8, 0xed, 0xe4, 0xe8, 0xe6, 0xea, 0xef, 0xe3, + 0xeb, 0xe7, 0xe1, 0xe4, 0xea, 0xec, 0xe9, 0xe5, 0xe3, 0xe6, 0xee, 0xeb, + 0xe5, 0xe0, 0xe0, 0xee, 0xec, 0xe9, 0xe7, 0xe2, 0xe7, 0xe2, 0xeb, 0xe1, + 0xe4, 0xee, 0xe1, 0xe7, 0xe9, 0xe4, 0xec, 0xea, 0xee, 0xe8, 0xe2, 0xed, + 0xe0, 0xef, 0xe6, 0xec, 0xea, 0xe9, 0xed, 0xe0, 0xef, 0xe3, 0xe3, 0xe5, + 0xe5, 0xe6, 0xe8, 0xeb, 0x7d, 0x71, 0x72, 0x7f, 0x78, 0x7d, 0x74, 0x78, + 0x76, 0x7a, 0x7f, 0x73, 0x7b, 0x77, 0x71, 0x74, 0x7a, 0x7c, 0x79, 0x75, + 0x73, 0x76, 0x7e, 0x7b, 0x75, 0x70, 0x70, 0x7e, 0x7c, 0x79, 0x77, 0x72, + 0x77, 0x72, 0x7b, 0x71, 0x74, 0x7e, 0x71, 0x77, 0x79, 0x74, 0x7c, 0x7a, + 0x7e, 0x78, 0x72, 0x7d, 0x70, 0x7f, 0x76, 0x7c, 0x7a, 0x79, 0x7d, 0x70, + 0x7f, 0x73, 0x73, 0x75, 0x75, 0x76, 0x78, 0x7b, 0xfd, 0xf1, 0xf2, 0xff, + 0xf8, 0xfd, 0xf4, 0xf8, 0xf6, 0xfa, 0xff, 0xf3, 0xfb, 0xf7, 0xf1, 0xf4, + 0xfa, 0xfc, 0xf9, 0xf5, 0xf3, 0xf6, 0xfe, 0xfb, 0xf5, 0xf0, 0xf0, 0xfe, + 0xfc, 0xf9, 0xf7, 0xf2, 0xf7, 0xf2, 0xfb, 0xf1, 0xf4, 0xfe, 0xf1, 0xf7, + 0xf9, 0xf4, 0xfc, 0xfa, 0xfe, 0xf8, 0xf2, 0xfd, 0xf0, 0xff, 0xf6, 0xfc, + 0xfa, 0xf9, 0xfd, 0xf0, 0xff, 0xf3, 0xf3, 0xf5, 0xf5, 0xf6, 0xf8, 0xfb, + 0x4d, 0x41, 0x42, 0x4f, 0x48, 0x4d, 0x44, 0x48, 0x46, 0x4a, 0x4f, 0x43, + 0x4b, 0x47, 0x41, 0x44, 0x4a, 0x4c, 0x49, 0x45, 0x43, 0x46, 0x4e, 0x4b, + 0x45, 0x40, 0x40, 0x4e, 0x4c, 0x49, 0x47, 0x42, 0x47, 0x42, 0x4b, 0x41, + 0x44, 0x4e, 0x41, 0x47, 0x49, 0x44, 0x4c, 0x4a, 0x4e, 0x48, 0x42, 0x4d, + 0x40, 0x4f, 0x46, 0x4c, 0x4a, 0x49, 0x4d, 0x40, 0x4f, 0x43, 0x43, 0x45, + 0x45, 0x46, 0x48, 0x4b, 0x0d, 0x01, 0x02, 0x0f, 0x08, 0x0d, 0x04, 0x08, + 0x06, 0x0a, 0x0f, 0x03, 0x0b, 0x07, 0x01, 0x04, 0x0a, 0x0c, 0x09, 0x05, + 0x03, 0x06, 0x0e, 0x0b, 0x05, 0x00, 0x00, 0x0e, 0x0c, 0x09, 0x07, 0x02, + 0x07, 0x02, 0x0b, 0x01, 0x04, 0x0e, 0x01, 0x07, 0x09, 0x04, 0x0c, 0x0a, + 0x0e, 0x08, 0x02, 0x0d, 0x00, 0x0f, 0x06, 0x0c, 0x0a, 0x09, 0x0d, 0x00, + 0x0f, 0x03, 0x03, 0x05, 0x05, 0x06, 0x08, 0x0b, 0x9d, 0x91, 0x92, 0x9f, + 0x98, 0x9d, 0x94, 0x98, 0x96, 0x9a, 0x9f, 0x93, 0x9b, 0x97, 0x91, 0x94, + 0x9a, 0x9c, 0x99, 0x95, 0x93, 0x96, 0x9e, 0x9b, 0x95, 0x90, 0x90, 0x9e, + 0x9c, 0x99, 0x97, 0x92, 0x97, 0x92, 0x9b, 0x91, 0x94, 0x9e, 0x91, 0x97, + 0x99, 0x94, 0x9c, 0x9a, 0x9e, 0x98, 0x92, 0x9d, 0x90, 0x9f, 0x96, 0x9c, + 0x9a, 0x99, 0x9d, 0x90, 0x9f, 0x93, 0x93, 0x95, 0x95, 0x96, 0x98, 0x9b, + 0x8d, 0x81, 0x82, 0x8f, 0x88, 0x8d, 0x84, 0x88, 0x86, 0x8a, 0x8f, 0x83, + 0x8b, 0x87, 0x81, 0x84, 0x8a, 0x8c, 0x89, 0x85, 0x83, 0x86, 0x8e, 0x8b, + 0x85, 0x80, 0x80, 0x8e, 0x8c, 0x89, 0x87, 0x82, 0x87, 0x82, 0x8b, 0x81, + 0x84, 0x8e, 0x81, 0x87, 0x89, 0x84, 0x8c, 0x8a, 0x8e, 0x88, 0x82, 0x8d, + 0x80, 0x8f, 0x86, 0x8c, 0x8a, 0x89, 0x8d, 0x80, 0x8f, 0x83, 0x83, 0x85, + 0x85, 0x86, 0x88, 0x8b, 0x1d, 0x11, 0x12, 0x1f, 0x18, 0x1d, 0x14, 0x18, + 0x16, 0x1a, 0x1f, 0x13, 0x1b, 0x17, 0x11, 0x14, 0x1a, 0x1c, 0x19, 0x15, + 0x13, 0x16, 0x1e, 0x1b, 0x15, 0x10, 0x10, 0x1e, 0x1c, 0x19, 0x17, 0x12, + 0x17, 0x12, 0x1b, 0x11, 0x14, 0x1e, 0x11, 0x17, 0x19, 0x14, 0x1c, 0x1a, + 0x1e, 0x18, 0x12, 0x1d, 0x10, 0x1f, 0x16, 0x1c, 0x1a, 0x19, 0x1d, 0x10, + 0x1f, 0x13, 0x13, 0x15, 0x15, 0x16, 0x18, 0x1b, 0xdd, 0xd1, 0xd2, 0xdf, + 0xd8, 0xdd, 0xd4, 0xd8, 0xd6, 0xda, 0xdf, 0xd3, 0xdb, 0xd7, 0xd1, 0xd4, + 0xda, 0xdc, 0xd9, 0xd5, 0xd3, 0xd6, 0xde, 0xdb, 0xd5, 0xd0, 0xd0, 0xde, + 0xdc, 0xd9, 0xd7, 0xd2, 0xd7, 0xd2, 0xdb, 0xd1, 0xd4, 0xde, 0xd1, 0xd7, + 0xd9, 0xd4, 0xdc, 0xda, 0xde, 0xd8, 0xd2, 0xdd, 0xd0, 0xdf, 0xd6, 0xdc, + 0xda, 0xd9, 0xdd, 0xd0, 0xdf, 0xd3, 0xd3, 0xd5, 0xd5, 0xd6, 0xd8, 0xdb, + 0xad, 0xa1, 0xa2, 0xaf, 0xa8, 0xad, 0xa4, 0xa8, 0xa6, 0xaa, 0xaf, 0xa3, + 0xab, 0xa7, 0xa1, 0xa4, 0xaa, 0xac, 0xa9, 0xa5, 0xa3, 0xa6, 0xae, 0xab, + 0xa5, 0xa0, 0xa0, 0xae, 0xac, 0xa9, 0xa7, 0xa2, 0xa7, 0xa2, 0xab, 0xa1, + 0xa4, 0xae, 0xa1, 0xa7, 0xa9, 0xa4, 0xac, 0xaa, 0xae, 0xa8, 0xa2, 0xad, + 0xa0, 0xaf, 0xa6, 0xac, 0xaa, 0xa9, 0xad, 0xa0, 0xaf, 0xa3, 0xa3, 0xa5, + 0xa5, 0xa6, 0xa8, 0xab, 0x3d, 0x31, 0x32, 0x3f, 0x38, 0x3d, 0x34, 0x38, + 0x36, 0x3a, 0x3f, 0x33, 0x3b, 0x37, 0x31, 0x34, 0x3a, 0x3c, 0x39, 0x35, + 0x33, 0x36, 0x3e, 0x3b, 0x35, 0x30, 0x30, 0x3e, 0x3c, 0x39, 0x37, 0x32, + 0x37, 0x32, 0x3b, 0x31, 0x34, 0x3e, 0x31, 0x37, 0x39, 0x34, 0x3c, 0x3a, + 0x3e, 0x38, 0x32, 0x3d, 0x30, 0x3f, 0x36, 0x3c, 0x3a, 0x39, 0x3d, 0x30, + 0x3f, 0x33, 0x33, 0x35, 0x35, 0x36, 0x38, 0x3b, 0xed, 0xe1, 0xe2, 0xef, + 0xe8, 0xed, 0xe4, 0xe8, 0xe6, 0xea, 0xef, 0xe3, 0xeb, 0xe7, 0xe1, 0xe4, + 0xea, 0xec, 0xe9, 0xe5, 0xe3, 0xe6, 0xee, 0xeb, 0xe5, 0xe0, 0xe0, 0xee, + 0xec, 0xe9, 0xe7, 0xe2, 0xe7, 0xe2, 0xeb, 0xe1, 0xe4, 0xee, 0xe1, 0xe7, + 0xe9, 0xe4, 0xec, 0xea, 0xee, 0xe8, 0xe2, 0xed, 0xe0, 0xef, 0xe6, 0xec, + 0xea, 0xe9, 0xed, 0xe0, 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe6, 0xe8, 0xeb, + 0xcd, 0xc1, 0xc2, 0xcf, 0xc8, 0xcd, 0xc4, 0xc8, 0xc6, 0xca, 0xcf, 0xc3, + 0xcb, 0xc7, 0xc1, 0xc4, 0xca, 0xcc, 0xc9, 0xc5, 0xc3, 0xc6, 0xce, 0xcb, + 0xc5, 0xc0, 0xc0, 0xce, 0xcc, 0xc9, 0xc7, 0xc2, 0xc7, 0xc2, 0xcb, 0xc1, + 0xc4, 0xce, 0xc1, 0xc7, 0xc9, 0xc4, 0xcc, 0xca, 0xce, 0xc8, 0xc2, 0xcd, + 0xc0, 0xcf, 0xc6, 0xcc, 0xca, 0xc9, 0xcd, 0xc0, 0xcf, 0xc3, 0xc3, 0xc5, + 0xc5, 0xc6, 0xc8, 0xcb, 0x3d, 0x31, 0x32, 0x3f, 0x38, 0x3d, 0x34, 0x38, + 0x36, 0x3a, 0x3f, 0x33, 0x3b, 0x37, 0x31, 0x34, 0x3a, 0x3c, 0x39, 0x35, + 0x33, 0x36, 0x3e, 0x3b, 0x35, 0x30, 0x30, 0x3e, 0x3c, 0x39, 0x37, 0x32, + 0x37, 0x32, 0x3b, 0x31, 0x34, 0x3e, 0x31, 0x37, 0x39, 0x34, 0x3c, 0x3a, + 0x3e, 0x38, 0x32, 0x3d, 0x30, 0x3f, 0x36, 0x3c, 0x3a, 0x39, 0x3d, 0x30, + 0x3f, 0x33, 0x33, 0x35, 0x35, 0x36, 0x38, 0x3b, 0x9d, 0x91, 0x92, 0x9f, + 0x98, 0x9d, 0x94, 0x98, 0x96, 0x9a, 0x9f, 0x93, 0x9b, 0x97, 0x91, 0x94, + 0x9a, 0x9c, 0x99, 0x95, 0x93, 0x96, 0x9e, 0x9b, 0x95, 0x90, 0x90, 0x9e, + 0x9c, 0x99, 0x97, 0x92, 0x97, 0x92, 0x9b, 0x91, 0x94, 0x9e, 0x91, 0x97, + 0x99, 0x94, 0x9c, 0x9a, 0x9e, 0x98, 0x92, 0x9d, 0x90, 0x9f, 0x96, 0x9c, + 0x9a, 0x99, 0x9d, 0x90, 0x9f, 0x93, 0x93, 0x95, 0x95, 0x96, 0x98, 0x9b, + 0x5d, 0x51, 0x52, 0x5f, 0x58, 0x5d, 0x54, 0x58, 0x56, 0x5a, 0x5f, 0x53, + 0x5b, 0x57, 0x51, 0x54, 0x5a, 0x5c, 0x59, 0x55, 0x53, 0x56, 0x5e, 0x5b, + 0x55, 0x50, 0x50, 0x5e, 0x5c, 0x59, 0x57, 0x52, 0x57, 0x52, 0x5b, 0x51, + 0x54, 0x5e, 0x51, 0x57, 0x59, 0x54, 0x5c, 0x5a, 0x5e, 0x58, 0x52, 0x5d, + 0x50, 0x5f, 0x56, 0x5c, 0x5a, 0x59, 0x5d, 0x50, 0x5f, 0x53, 0x53, 0x55, + 0x55, 0x56, 0x58, 0x5b, 0x7d, 0x71, 0x72, 0x7f, 0x78, 0x7d, 0x74, 0x78, + 0x76, 0x7a, 0x7f, 0x73, 0x7b, 0x77, 0x71, 0x74, 0x7a, 0x7c, 0x79, 0x75, + 0x73, 0x76, 0x7e, 0x7b, 0x75, 0x70, 0x70, 0x7e, 0x7c, 0x79, 0x77, 0x72, + 0x77, 0x72, 0x7b, 0x71, 0x74, 0x7e, 0x71, 0x77, 0x79, 0x74, 0x7c, 0x7a, + 0x7e, 0x78, 0x72, 0x7d, 0x70, 0x7f, 0x76, 0x7c, 0x7a, 0x79, 0x7d, 0x70, + 0x7f, 0x73, 0x73, 0x75, 0x75, 0x76, 0x78, 0x7b, 0xcd, 0xc1, 0xc2, 0xcf, + 0xc8, 0xcd, 0xc4, 0xc8, 0xc6, 0xca, 0xcf, 0xc3, 0xcb, 0xc7, 0xc1, 0xc4, + 0xca, 0xcc, 0xc9, 0xc5, 0xc3, 0xc6, 0xce, 0xcb, 0xc5, 0xc0, 0xc0, 0xce, + 0xcc, 0xc9, 0xc7, 0xc2, 0xc7, 0xc2, 0xcb, 0xc1, 0xc4, 0xce, 0xc1, 0xc7, + 0xc9, 0xc4, 0xcc, 0xca, 0xce, 0xc8, 0xc2, 0xcd, 0xc0, 0xcf, 0xc6, 0xcc, + 0xca, 0xc9, 0xcd, 0xc0, 0xcf, 0xc3, 0xc3, 0xc5, 0xc5, 0xc6, 0xc8, 0xcb, + 0x5d, 0x51, 0x52, 0x5f, 0x58, 0x5d, 0x54, 0x58, 0x56, 0x5a, 0x5f, 0x53, + 0x5b, 0x57, 0x51, 0x54, 0x5a, 0x5c, 0x59, 0x55, 0x53, 0x56, 0x5e, 0x5b, + 0x55, 0x50, 0x50, 0x5e, 0x5c, 0x59, 0x57, 0x52, 0x57, 0x52, 0x5b, 0x51, + 0x54, 0x5e, 0x51, 0x57, 0x59, 0x54, 0x5c, 0x5a, 0x5e, 0x58, 0x52, 0x5d, + 0x50, 0x5f, 0x56, 0x5c, 0x5a, 0x59, 0x5d, 0x50, 0x5f, 0x53, 0x53, 0x55, + 0x55, 0x56, 0x58, 0x5b, 0x2d, 0x21, 0x22, 0x2f, 0x28, 0x2d, 0x24, 0x28, + 0x26, 0x2a, 0x2f, 0x23, 0x2b, 0x27, 0x21, 0x24, 0x2a, 0x2c, 0x29, 0x25, + 0x23, 0x26, 0x2e, 0x2b, 0x25, 0x20, 0x20, 0x2e, 0x2c, 0x29, 0x27, 0x22, + 0x27, 0x22, 0x2b, 0x21, 0x24, 0x2e, 0x21, 0x27, 0x29, 0x24, 0x2c, 0x2a, + 0x2e, 0x28, 0x22, 0x2d, 0x20, 0x2f, 0x26, 0x2c, 0x2a, 0x29, 0x2d, 0x20, + 0x2f, 0x23, 0x23, 0x25, 0x25, 0x26, 0x28, 0x2b, 0xad, 0xa1, 0xa2, 0xaf, + 0xa8, 0xad, 0xa4, 0xa8, 0xa6, 0xaa, 0xaf, 0xa3, 0xab, 0xa7, 0xa1, 0xa4, + 0xaa, 0xac, 0xa9, 0xa5, 0xa3, 0xa6, 0xae, 0xab, 0xa5, 0xa0, 0xa0, 0xae, + 0xac, 0xa9, 0xa7, 0xa2, 0xa7, 0xa2, 0xab, 0xa1, 0xa4, 0xae, 0xa1, 0xa7, + 0xa9, 0xa4, 0xac, 0xaa, 0xae, 0xa8, 0xa2, 0xad, 0xa0, 0xaf, 0xa6, 0xac, + 0xaa, 0xa9, 0xad, 0xa0, 0xaf, 0xa3, 0xa3, 0xa5, 0xa5, 0xa6, 0xa8, 0xab, + 0xfd, 0xf1, 0xf2, 0xff, 0xf8, 0xfd, 0xf4, 0xf8, 0xf6, 0xfa, 0xff, 0xf3, + 0xfb, 0xf7, 0xf1, 0xf4, 0xfa, 0xfc, 0xf9, 0xf5, 0xf3, 0xf6, 0xfe, 0xfb, + 0xf5, 0xf0, 0xf0, 0xfe, 0xfc, 0xf9, 0xf7, 0xf2, 0xf7, 0xf2, 0xfb, 0xf1, + 0xf4, 0xfe, 0xf1, 0xf7, 0xf9, 0xf4, 0xfc, 0xfa, 0xfe, 0xf8, 0xf2, 0xfd, + 0xf0, 0xff, 0xf6, 0xfc, 0xfa, 0xf9, 0xfd, 0xf0, 0xff, 0xf3, 0xf3, 0xf5, + 0xf5, 0xf6, 0xf8, 0xfb, 0x6d, 0x61, 0x62, 0x6f, 0x68, 0x6d, 0x64, 0x68, + 0x66, 0x6a, 0x6f, 0x63, 0x6b, 0x67, 0x61, 0x64, 0x6a, 0x6c, 0x69, 0x65, + 0x63, 0x66, 0x6e, 0x6b, 0x65, 0x60, 0x60, 0x6e, 0x6c, 0x69, 0x67, 0x62, + 0x67, 0x62, 0x6b, 0x61, 0x64, 0x6e, 0x61, 0x67, 0x69, 0x64, 0x6c, 0x6a, + 0x6e, 0x68, 0x62, 0x6d, 0x60, 0x6f, 0x66, 0x6c, 0x6a, 0x69, 0x6d, 0x60, + 0x6f, 0x63, 0x63, 0x65, 0x65, 0x66, 0x68, 0x6b, 0x8d, 0x81, 0x82, 0x8f, + 0x88, 0x8d, 0x84, 0x88, 0x86, 0x8a, 0x8f, 0x83, 0x8b, 0x87, 0x81, 0x84, + 0x8a, 0x8c, 0x89, 0x85, 0x83, 0x86, 0x8e, 0x8b, 0x85, 0x80, 0x80, 0x8e, + 0x8c, 0x89, 0x87, 0x82, 0x87, 0x82, 0x8b, 0x81, 0x84, 0x8e, 0x81, 0x87, + 0x89, 0x84, 0x8c, 0x8a, 0x8e, 0x88, 0x82, 0x8d, 0x80, 0x8f, 0x86, 0x8c, + 0x8a, 0x89, 0x8d, 0x80, 0x8f, 0x83, 0x83, 0x85, 0x85, 0x86, 0x88, 0x8b, + 0x1d, 0x11, 0x12, 0x1f, 0x18, 0x1d, 0x14, 0x18, 0x16, 0x1a, 0x1f, 0x13, + 0x1b, 0x17, 0x11, 0x14, 0x1a, 0x1c, 0x19, 0x15, 0x13, 0x16, 0x1e, 0x1b, + 0x15, 0x10, 0x10, 0x1e, 0x1c, 0x19, 0x17, 0x12, 0x17, 0x12, 0x1b, 0x11, + 0x14, 0x1e, 0x11, 0x17, 0x19, 0x14, 0x1c, 0x1a, 0x1e, 0x18, 0x12, 0x1d, + 0x10, 0x1f, 0x16, 0x1c, 0x1a, 0x19, 0x1d, 0x10, 0x1f, 0x13, 0x13, 0x15, + 0x15, 0x16, 0x18, 0x1b, 0x6d, 0x61, 0x62, 0x6f, 0x68, 0x6d, 0x64, 0x68, + 0x66, 0x6a, 0x6f, 0x63, 0x6b, 0x67, 0x61, 0x64, 0x6a, 0x6c, 0x69, 0x65, + 0x63, 0x66, 0x6e, 0x6b, 0x65, 0x60, 0x60, 0x6e, 0x6c, 0x69, 0x67, 0x62, + 0x67, 0x62, 0x6b, 0x61, 0x64, 0x6e, 0x61, 0x67, 0x69, 0x64, 0x6c, 0x6a, + 0x6e, 0x68, 0x62, 0x6d, 0x60, 0x6f, 0x66, 0x6c, 0x6a, 0x69, 0x6d, 0x60, + 0x6f, 0x63, 0x63, 0x65, 0x65, 0x66, 0x68, 0x6b, 0x1d, 0x11, 0x12, 0x1f, + 0x18, 0x1d, 0x14, 0x18, 0x16, 0x1a, 0x1f, 0x13, 0x1b, 0x17, 0x11, 0x14, + 0x1a, 0x1c, 0x19, 0x15, 0x13, 0x16, 0x1e, 0x1b, 0x15, 0x10, 0x10, 0x1e, + 0x1c, 0x19, 0x17, 0x12, 0x17, 0x12, 0x1b, 0x11, 0x14, 0x1e, 0x11, 0x17, + 0x19, 0x14, 0x1c, 0x1a, 0x1e, 0x18, 0x12, 0x1d, 0x10, 0x1f, 0x16, 0x1c, + 0x1a, 0x19, 0x1d, 0x10, 0x1f, 0x13, 0x13, 0x15, 0x15, 0x16, 0x18, 0x1b, + 0x6d, 0x61, 0x62, 0x6f, 0x68, 0x6d, 0x64, 0x68, 0x66, 0x6a, 0x6f, 0x63, + 0x6b, 0x67, 0x61, 0x64, 0x6a, 0x6c, 0x69, 0x65, 0x63, 0x66, 0x6e, 0x6b, + 0x65, 0x60, 0x60, 0x6e, 0x6c, 0x69, 0x67, 0x62, 0x67, 0x62, 0x6b, 0x61, + 0x64, 0x6e, 0x61, 0x67, 0x69, 0x64, 0x6c, 0x6a, 0x6e, 0x68, 0x62, 0x6d, + 0x60, 0x6f, 0x66, 0x6c, 0x6a, 0x69, 0x6d, 0x60, 0x6f, 0x63, 0x63, 0x65, + 0x65, 0x66, 0x68, 0x6b, 0x4d, 0x41, 0x42, 0x4f, 0x48, 0x4d, 0x44, 0x48, + 0x46, 0x4a, 0x4f, 0x43, 0x4b, 0x47, 0x41, 0x44, 0x4a, 0x4c, 0x49, 0x45, + 0x43, 0x46, 0x4e, 0x4b, 0x45, 0x40, 0x40, 0x4e, 0x4c, 0x49, 0x47, 0x42, + 0x47, 0x42, 0x4b, 0x41, 0x44, 0x4e, 0x41, 0x47, 0x49, 0x44, 0x4c, 0x4a, + 0x4e, 0x48, 0x42, 0x4d, 0x40, 0x4f, 0x46, 0x4c, 0x4a, 0x49, 0x4d, 0x40, + 0x4f, 0x43, 0x43, 0x45, 0x45, 0x46, 0x48, 0x4b, 0xbd, 0xb1, 0xb2, 0xbf, + 0xb8, 0xbd, 0xb4, 0xb8, 0xb6, 0xba, 0xbf, 0xb3, 0xbb, 0xb7, 0xb1, 0xb4, + 0xba, 0xbc, 0xb9, 0xb5, 0xb3, 0xb6, 0xbe, 0xbb, 0xb5, 0xb0, 0xb0, 0xbe, + 0xbc, 0xb9, 0xb7, 0xb2, 0xb7, 0xb2, 0xbb, 0xb1, 0xb4, 0xbe, 0xb1, 0xb7, + 0xb9, 0xb4, 0xbc, 0xba, 0xbe, 0xb8, 0xb2, 0xbd, 0xb0, 0xbf, 0xb6, 0xbc, + 0xba, 0xb9, 0xbd, 0xb0, 0xbf, 0xb3, 0xb3, 0xb5, 0xb5, 0xb6, 0xb8, 0xbb, + 0xbd, 0xb1, 0xb2, 0xbf, 0xb8, 0xbd, 0xb4, 0xb8, 0xb6, 0xba, 0xbf, 0xb3, + 0xbb, 0xb7, 0xb1, 0xb4, 0xba, 0xbc, 0xb9, 0xb5, 0xb3, 0xb6, 0xbe, 0xbb, + 0xb5, 0xb0, 0xb0, 0xbe, 0xbc, 0xb9, 0xb7, 0xb2, 0xb7, 0xb2, 0xbb, 0xb1, + 0xb4, 0xbe, 0xb1, 0xb7, 0xb9, 0xb4, 0xbc, 0xba, 0xbe, 0xb8, 0xb2, 0xbd, + 0xb0, 0xbf, 0xb6, 0xbc, 0xba, 0xb9, 0xbd, 0xb0, 0xbf, 0xb3, 0xb3, 0xb5, + 0xb5, 0xb6, 0xb8, 0xbb, 0xdd, 0xd1, 0xd2, 0xdf, 0xd8, 0xdd, 0xd4, 0xd8, + 0xd6, 0xda, 0xdf, 0xd3, 0xdb, 0xd7, 0xd1, 0xd4, 0xda, 0xdc, 0xd9, 0xd5, + 0xd3, 0xd6, 0xde, 0xdb, 0xd5, 0xd0, 0xd0, 0xde, 0xdc, 0xd9, 0xd7, 0xd2, + 0xd7, 0xd2, 0xdb, 0xd1, 0xd4, 0xde, 0xd1, 0xd7, 0xd9, 0xd4, 0xdc, 0xda, + 0xde, 0xd8, 0xd2, 0xdd, 0xd0, 0xdf, 0xd6, 0xdc, 0xda, 0xd9, 0xdd, 0xd0, + 0xdf, 0xd3, 0xd3, 0xd5, 0xd5, 0xd6, 0xd8, 0xdb, 0xdd, 0xd1, 0xd2, 0xdf, + 0xd8, 0xdd, 0xd4, 0xd8, 0xd6, 0xda, 0xdf, 0xd3, 0xdb, 0xd7, 0xd1, 0xd4, + 0xda, 0xdc, 0xd9, 0xd5, 0xd3, 0xd6, 0xde, 0xdb, 0xd5, 0xd0, 0xd0, 0xde, + 0xdc, 0xd9, 0xd7, 0xd2, 0xd7, 0xd2, 0xdb, 0xd1, 0xd4, 0xde, 0xd1, 0xd7, + 0xd9, 0xd4, 0xdc, 0xda, 0xde, 0xd8, 0xd2, 0xdd, 0xd0, 0xdf, 0xd6, 0xdc, + 0xda, 0xd9, 0xdd, 0xd0, 0xdf, 0xd3, 0xd3, 0xd5, 0xd5, 0xd6, 0xd8, 0xdb, + 0x8d, 0x81, 0x82, 0x8f, 0x88, 0x8d, 0x84, 0x88, 0x86, 0x8a, 0x8f, 0x83, + 0x8b, 0x87, 0x81, 0x84, 0x8a, 0x8c, 0x89, 0x85, 0x83, 0x86, 0x8e, 0x8b, + 0x85, 0x80, 0x80, 0x8e, 0x8c, 0x89, 0x87, 0x82, 0x87, 0x82, 0x8b, 0x81, + 0x84, 0x8e, 0x81, 0x87, 0x89, 0x84, 0x8c, 0x8a, 0x8e, 0x88, 0x82, 0x8d, + 0x80, 0x8f, 0x86, 0x8c, 0x8a, 0x89, 0x8d, 0x80, 0x8f, 0x83, 0x83, 0x85, + 0x85, 0x86, 0x88, 0x8b, 0xcd, 0xc1, 0xc2, 0xcf, 0xc8, 0xcd, 0xc4, 0xc8, + 0xc6, 0xca, 0xcf, 0xc3, 0xcb, 0xc7, 0xc1, 0xc4, 0xca, 0xcc, 0xc9, 0xc5, + 0xc3, 0xc6, 0xce, 0xcb, 0xc5, 0xc0, 0xc0, 0xce, 0xcc, 0xc9, 0xc7, 0xc2, + 0xc7, 0xc2, 0xcb, 0xc1, 0xc4, 0xce, 0xc1, 0xc7, 0xc9, 0xc4, 0xcc, 0xca, + 0xce, 0xc8, 0xc2, 0xcd, 0xc0, 0xcf, 0xc6, 0xcc, 0xca, 0xc9, 0xcd, 0xc0, + 0xcf, 0xc3, 0xc3, 0xc5, 0xc5, 0xc6, 0xc8, 0xcb, 0x1d, 0x11, 0x12, 0x1f, + 0x18, 0x1d, 0x14, 0x18, 0x16, 0x1a, 0x1f, 0x13, 0x1b, 0x17, 0x11, 0x14, + 0x1a, 0x1c, 0x19, 0x15, 0x13, 0x16, 0x1e, 0x1b, 0x15, 0x10, 0x10, 0x1e, + 0x1c, 0x19, 0x17, 0x12, 0x17, 0x12, 0x1b, 0x11, 0x14, 0x1e, 0x11, 0x17, + 0x19, 0x14, 0x1c, 0x1a, 0x1e, 0x18, 0x12, 0x1d, 0x10, 0x1f, 0x16, 0x1c, + 0x1a, 0x19, 0x1d, 0x10, 0x1f, 0x13, 0x13, 0x15, 0x15, 0x16, 0x18, 0x1b, + 0x3d, 0x31, 0x32, 0x3f, 0x38, 0x3d, 0x34, 0x38, 0x36, 0x3a, 0x3f, 0x33, + 0x3b, 0x37, 0x31, 0x34, 0x3a, 0x3c, 0x39, 0x35, 0x33, 0x36, 0x3e, 0x3b, + 0x35, 0x30, 0x30, 0x3e, 0x3c, 0x39, 0x37, 0x32, 0x37, 0x32, 0x3b, 0x31, + 0x34, 0x3e, 0x31, 0x37, 0x39, 0x34, 0x3c, 0x3a, 0x3e, 0x38, 0x32, 0x3d, + 0x30, 0x3f, 0x36, 0x3c, 0x3a, 0x39, 0x3d, 0x30, 0x3f, 0x33, 0x33, 0x35, + 0x35, 0x36, 0x38, 0x3b, 0x4d, 0x41, 0x42, 0x4f, 0x48, 0x4d, 0x44, 0x48, + 0x46, 0x4a, 0x4f, 0x43, 0x4b, 0x47, 0x41, 0x44, 0x4a, 0x4c, 0x49, 0x45, + 0x43, 0x46, 0x4e, 0x4b, 0x45, 0x40, 0x40, 0x4e, 0x4c, 0x49, 0x47, 0x42, + 0x47, 0x42, 0x4b, 0x41, 0x44, 0x4e, 0x41, 0x47, 0x49, 0x44, 0x4c, 0x4a, + 0x4e, 0x48, 0x42, 0x4d, 0x40, 0x4f, 0x46, 0x4c, 0x4a, 0x49, 0x4d, 0x40, + 0x4f, 0x43, 0x43, 0x45, 0x45, 0x46, 0x48, 0x4b, 0x7d, 0x71, 0x72, 0x7f, + 0x78, 0x7d, 0x74, 0x78, 0x76, 0x7a, 0x7f, 0x73, 0x7b, 0x77, 0x71, 0x74, + 0x7a, 0x7c, 0x79, 0x75, 0x73, 0x76, 0x7e, 0x7b, 0x75, 0x70, 0x70, 0x7e, + 0x7c, 0x79, 0x77, 0x72, 0x77, 0x72, 0x7b, 0x71, 0x74, 0x7e, 0x71, 0x77, + 0x79, 0x74, 0x7c, 0x7a, 0x7e, 0x78, 0x72, 0x7d, 0x70, 0x7f, 0x76, 0x7c, + 0x7a, 0x79, 0x7d, 0x70, 0x7f, 0x73, 0x73, 0x75, 0x75, 0x76, 0x78, 0x7b, + 0xad, 0xa1, 0xa2, 0xaf, 0xa8, 0xad, 0xa4, 0xa8, 0xa6, 0xaa, 0xaf, 0xa3, + 0xab, 0xa7, 0xa1, 0xa4, 0xaa, 0xac, 0xa9, 0xa5, 0xa3, 0xa6, 0xae, 0xab, + 0xa5, 0xa0, 0xa0, 0xae, 0xac, 0xa9, 0xa7, 0xa2, 0xa7, 0xa2, 0xab, 0xa1, + 0xa4, 0xae, 0xa1, 0xa7, 0xa9, 0xa4, 0xac, 0xaa, 0xae, 0xa8, 0xa2, 0xad, + 0xa0, 0xaf, 0xa6, 0xac, 0xaa, 0xa9, 0xad, 0xa0, 0xaf, 0xa3, 0xa3, 0xa5, + 0xa5, 0xa6, 0xa8, 0xab, 0xed, 0xe1, 0xe2, 0xef, 0xe8, 0xed, 0xe4, 0xe8, + 0xe6, 0xea, 0xef, 0xe3, 0xeb, 0xe7, 0xe1, 0xe4, 0xea, 0xec, 0xe9, 0xe5, + 0xe3, 0xe6, 0xee, 0xeb, 0xe5, 0xe0, 0xe0, 0xee, 0xec, 0xe9, 0xe7, 0xe2, + 0xe7, 0xe2, 0xeb, 0xe1, 0xe4, 0xee, 0xe1, 0xe7, 0xe9, 0xe4, 0xec, 0xea, + 0xee, 0xe8, 0xe2, 0xed, 0xe0, 0xef, 0xe6, 0xec, 0xea, 0xe9, 0xed, 0xe0, + 0xef, 0xe3, 0xe3, 0xe5, 0xe5, 0xe6, 0xe8, 0xeb, 0x7d, 0x71, 0x72, 0x7f, + 0x78, 0x7d, 0x74, 0x78, 0x76, 0x7a, 0x7f, 0x73, 0x7b, 0x77, 0x71, 0x74, + 0x7a, 0x7c, 0x79, 0x75, 0x73, 0x76, 0x7e, 0x7b, 0x75, 0x70, 0x70, 0x7e, + 0x7c, 0x79, 0x77, 0x72, 0x77, 0x72, 0x7b, 0x71, 0x74, 0x7e, 0x71, 0x77, + 0x79, 0x74, 0x7c, 0x7a, 0x7e, 0x78, 0x72, 0x7d, 0x70, 0x7f, 0x76, 0x7c, + 0x7a, 0x79, 0x7d, 0x70, 0x7f, 0x73, 0x73, 0x75, 0x75, 0x76, 0x78, 0x7b, + 0xad, 0xa1, 0xa2, 0xaf, 0xa8, 0xad, 0xa4, 0xa8, 0xa6, 0xaa, 0xaf, 0xa3, + 0xab, 0xa7, 0xa1, 0xa4, 0xaa, 0xac, 0xa9, 0xa5, 0xa3, 0xa6, 0xae, 0xab, + 0xa5, 0xa0, 0xa0, 0xae, 0xac, 0xa9, 0xa7, 0xa2, 0xa7, 0xa2, 0xab, 0xa1, + 0xa4, 0xae, 0xa1, 0xa7, 0xa9, 0xa4, 0xac, 0xaa, 0xae, 0xa8, 0xa2, 0xad, + 0xa0, 0xaf, 0xa6, 0xac, 0xaa, 0xa9, 0xad, 0xa0, 0xaf, 0xa3, 0xa3, 0xa5, + 0xa5, 0xa6, 0xa8, 0xab, 0x9d, 0x91, 0x92, 0x9f, 0x98, 0x9d, 0x94, 0x98, + 0x96, 0x9a, 0x9f, 0x93, 0x9b, 0x97, 0x91, 0x94, 0x9a, 0x9c, 0x99, 0x95, + 0x93, 0x96, 0x9e, 0x9b, 0x95, 0x90, 0x90, 0x9e, 0x9c, 0x99, 0x97, 0x92, + 0x97, 0x92, 0x9b, 0x91, 0x94, 0x9e, 0x91, 0x97, 0x99, 0x94, 0x9c, 0x9a, + 0x9e, 0x98, 0x92, 0x9d, 0x90, 0x9f, 0x96, 0x9c, 0x9a, 0x99, 0x9d, 0x90, + 0x9f, 0x93, 0x93, 0x95, 0x95, 0x96, 0x98, 0x9b, 0xfd, 0xf1, 0xf2, 0xff, + 0xf8, 0xfd, 0xf4, 0xf8, 0xf6, 0xfa, 0xff, 0xf3, 0xfb, 0xf7, 0xf1, 0xf4, + 0xfa, 0xfc, 0xf9, 0xf5, 0xf3, 0xf6, 0xfe, 0xfb, 0xf5, 0xf0, 0xf0, 0xfe, + 0xfc, 0xf9, 0xf7, 0xf2, 0xf7, 0xf2, 0xfb, 0xf1, 0xf4, 0xfe, 0xf1, 0xf7, + 0xf9, 0xf4, 0xfc, 0xfa, 0xfe, 0xf8, 0xf2, 0xfd, 0xf0, 0xff, 0xf6, 0xfc, + 0xfa, 0xf9, 0xfd, 0xf0, 0xff, 0xf3, 0xf3, 0xf5, 0xf5, 0xf6, 0xf8, 0xfb, + 0x5d, 0x51, 0x52, 0x5f, 0x58, 0x5d, 0x54, 0x58, 0x56, 0x5a, 0x5f, 0x53, + 0x5b, 0x57, 0x51, 0x54, 0x5a, 0x5c, 0x59, 0x55, 0x53, 0x56, 0x5e, 0x5b, + 0x55, 0x50, 0x50, 0x5e, 0x5c, 0x59, 0x57, 0x52, 0x57, 0x52, 0x5b, 0x51, + 0x54, 0x5e, 0x51, 0x57, 0x59, 0x54, 0x5c, 0x5a, 0x5e, 0x58, 0x52, 0x5d, + 0x50, 0x5f, 0x56, 0x5c, 0x5a, 0x59, 0x5d, 0x50, 0x5f, 0x53, 0x53, 0x55, + 0x55, 0x56, 0x58, 0x5b, 0x6d, 0x61, 0x62, 0x6f, 0x68, 0x6d, 0x64, 0x68, + 0x66, 0x6a, 0x6f, 0x63, 0x6b, 0x67, 0x61, 0x64, 0x6a, 0x6c, 0x69, 0x65, + 0x63, 0x66, 0x6e, 0x6b, 0x65, 0x60, 0x60, 0x6e, 0x6c, 0x69, 0x67, 0x62, + 0x67, 0x62, 0x6b, 0x61, 0x64, 0x6e, 0x61, 0x67, 0x69, 0x64, 0x6c, 0x6a, + 0x6e, 0x68, 0x62, 0x6d, 0x60, 0x6f, 0x66, 0x6c, 0x6a, 0x69, 0x6d, 0x60, + 0x6f, 0x63, 0x63, 0x65, 0x65, 0x66, 0x68, 0x6b, 0x0d, 0x01, 0x02, 0x0f, + 0x08, 0x0d, 0x04, 0x08, 0x06, 0x0a, 0x0f, 0x03, 0x0b, 0x07, 0x01, 0x04, + 0x0a, 0x0c, 0x09, 0x05, 0x03, 0x06, 0x0e, 0x0b, 0x05, 0x00, 0x00, 0x0e, + 0x0c, 0x09, 0x07, 0x02, 0x07, 0x02, 0x0b, 0x01, 0x04, 0x0e, 0x01, 0x07, + 0x09, 0x04, 0x0c, 0x0a, 0x0e, 0x08, 0x02, 0x0d, 0x00, 0x0f, 0x06, 0x0c, + 0x0a, 0x09, 0x0d, 0x00, 0x0f, 0x03, 0x03, 0x05, 0x05, 0x06, 0x08, 0x0b, + 0x8d, 0x81, 0x82, 0x8f, 0x88, 0x8d, 0x84, 0x88, 0x86, 0x8a, 0x8f, 0x83, + 0x8b, 0x87, 0x81, 0x84, 0x8a, 0x8c, 0x89, 0x85, 0x83, 0x86, 0x8e, 0x8b, + 0x85, 0x80, 0x80, 0x8e, 0x8c, 0x89, 0x87, 0x82, 0x87, 0x82, 0x8b, 0x81, + 0x84, 0x8e, 0x81, 0x87, 0x89, 0x84, 0x8c, 0x8a, 0x8e, 0x88, 0x82, 0x8d, + 0x80, 0x8f, 0x86, 0x8c, 0x8a, 0x89, 0x8d, 0x80, 0x8f, 0x83, 0x83, 0x85, + 0x85, 0x86, 0x88, 0x8b, 0xfd, 0xf1, 0xf2, 0xff, 0xf8, 0xfd, 0xf4, 0xf8, + 0xf6, 0xfa, 0xff, 0xf3, 0xfb, 0xf7, 0xf1, 0xf4, 0xfa, 0xfc, 0xf9, 0xf5, + 0xf3, 0xf6, 0xfe, 0xfb, 0xf5, 0xf0, 0xf0, 0xfe, 0xfc, 0xf9, 0xf7, 0xf2, + 0xf7, 0xf2, 0xfb, 0xf1, 0xf4, 0xfe, 0xf1, 0xf7, 0xf9, 0xf4, 0xfc, 0xfa, + 0xfe, 0xf8, 0xf2, 0xfd, 0xf0, 0xff, 0xf6, 0xfc, 0xfa, 0xf9, 0xfd, 0xf0, + 0xff, 0xf3, 0xf3, 0xf5, 0xf5, 0xf6, 0xf8, 0xfb, 0x0d, 0x01, 0x02, 0x0f, + 0x08, 0x0d, 0x04, 0x08, 0x06, 0x0a, 0x0f, 0x03, 0x0b, 0x07, 0x01, 0x04, + 0x0a, 0x0c, 0x09, 0x05, 0x03, 0x06, 0x0e, 0x0b, 0x05, 0x00, 0x00, 0x0e, + 0x0c, 0x09, 0x07, 0x02, 0x07, 0x02, 0x0b, 0x01, 0x04, 0x0e, 0x01, 0x07, + 0x09, 0x04, 0x0c, 0x0a, 0x0e, 0x08, 0x02, 0x0d, 0x00, 0x0f, 0x06, 0x0c, + 0x0a, 0x09, 0x0d, 0x00, 0x0f, 0x03, 0x03, 0x05, 0x05, 0x06, 0x08, 0x0b, + 0xed, 0xe1, 0xe2, 0xef, 0xe8, 0xed, 0xe4, 0xe8, 0xe6, 0xea, 0xef, 0xe3, + 0xeb, 0xe7, 0xe1, 0xe4, 0xea, 0xec, 0xe9, 0xe5, 0xe3, 0xe6, 0xee, 0xeb, + 0xe5, 0xe0, 0xe0, 0xee, 0xec, 0xe9, 0xe7, 0xe2, 0xe7, 0xe2, 0xeb, 0xe1, + 0xe4, 0xee, 0xe1, 0xe7, 0xe9, 0xe4, 0xec, 0xea, 0xee, 0xe8, 0xe2, 0xed, + 0xe0, 0xef, 0xe6, 0xec, 0xea, 0xe9, 0xed, 0xe0, 0xef, 0xe3, 0xe3, 0xe5, + 0xe5, 0xe6, 0xe8, 0xeb, 0x5d, 0x51, 0x52, 0x5f, 0x58, 0x5d, 0x54, 0x58, + 0x56, 0x5a, 0x5f, 0x53, 0x5b, 0x57, 0x51, 0x54, 0x5a, 0x5c, 0x59, 0x55, + 0x53, 0x56, 0x5e, 0x5b, 0x55, 0x50, 0x50, 0x5e, 0x5c, 0x59, 0x57, 0x52, + 0x57, 0x52, 0x5b, 0x51, 0x54, 0x5e, 0x51, 0x57, 0x59, 0x54, 0x5c, 0x5a, + 0x5e, 0x58, 0x52, 0x5d, 0x50, 0x5f, 0x56, 0x5c, 0x5a, 0x59, 0x5d, 0x50, + 0x5f, 0x53, 0x53, 0x55, 0x55, 0x56, 0x58, 0x5b, 0x2d, 0x21, 0x22, 0x2f, + 0x28, 0x2d, 0x24, 0x28, 0x26, 0x2a, 0x2f, 0x23, 0x2b, 0x27, 0x21, 0x24, + 0x2a, 0x2c, 0x29, 0x25, 0x23, 0x26, 0x2e, 0x2b, 0x25, 0x20, 0x20, 0x2e, + 0x2c, 0x29, 0x27, 0x22, 0x27, 0x22, 0x2b, 0x21, 0x24, 0x2e, 0x21, 0x27, + 0x29, 0x24, 0x2c, 0x2a, 0x2e, 0x28, 0x22, 0x2d, 0x20, 0x2f, 0x26, 0x2c, + 0x2a, 0x29, 0x2d, 0x20, 0x2f, 0x23, 0x23, 0x25, 0x25, 0x26, 0x28, 0x2b, + 0x9d, 0x91, 0x92, 0x9f, 0x98, 0x9d, 0x94, 0x98, 0x96, 0x9a, 0x9f, 0x93, + 0x9b, 0x97, 0x91, 0x94, 0x9a, 0x9c, 0x99, 0x95, 0x93, 0x96, 0x9e, 0x9b, + 0x95, 0x90, 0x90, 0x9e, 0x9c, 0x99, 0x97, 0x92, 0x97, 0x92, 0x9b, 0x91, + 0x94, 0x9e, 0x91, 0x97, 0x99, 0x94, 0x9c, 0x9a, 0x9e, 0x98, 0x92, 0x9d, + 0x90, 0x9f, 0x96, 0x9c, 0x9a, 0x99, 0x9d, 0x90, 0x9f, 0x93, 0x93, 0x95, + 0x95, 0x96, 0x98, 0x9b, 0x3d, 0x31, 0x32, 0x3f, 0x38, 0x3d, 0x34, 0x38, + 0x36, 0x3a, 0x3f, 0x33, 0x3b, 0x37, 0x31, 0x34, 0x3a, 0x3c, 0x39, 0x35, + 0x33, 0x36, 0x3e, 0x3b, 0x35, 0x30, 0x30, 0x3e, 0x3c, 0x39, 0x37, 0x32, + 0x37, 0x32, 0x3b, 0x31, 0x34, 0x3e, 0x31, 0x37, 0x39, 0x34, 0x3c, 0x3a, + 0x3e, 0x38, 0x32, 0x3d, 0x30, 0x3f, 0x36, 0x3c, 0x3a, 0x39, 0x3d, 0x30, + 0x3f, 0x33, 0x33, 0x35, 0x35, 0x36, 0x38, 0x3b, 0x2d, 0x21, 0x22, 0x2f, + 0x28, 0x2d, 0x24, 0x28, 0x26, 0x2a, 0x2f, 0x23, 0x2b, 0x27, 0x21, 0x24, + 0x2a, 0x2c, 0x29, 0x25, 0x23, 0x26, 0x2e, 0x2b, 0x25, 0x20, 0x20, 0x2e, + 0x2c, 0x29, 0x27, 0x22, 0x27, 0x22, 0x2b, 0x21, 0x24, 0x2e, 0x21, 0x27, + 0x29, 0x24, 0x2c, 0x2a, 0x2e, 0x28, 0x22, 0x2d, 0x20, 0x2f, 0x26, 0x2c, + 0x2a, 0x29, 0x2d, 0x20, 0x2f, 0x23, 0x23, 0x25, 0x25, 0x26, 0x28, 0x2b, + 0xcd, 0xc1, 0xc2, 0xcf, 0xc8, 0xcd, 0xc4, 0xc8, 0xc6, 0xca, 0xcf, 0xc3, + 0xcb, 0xc7, 0xc1, 0xc4, 0xca, 0xcc, 0xc9, 0xc5, 0xc3, 0xc6, 0xce, 0xcb, + 0xc5, 0xc0, 0xc0, 0xce, 0xcc, 0xc9, 0xc7, 0xc2, 0xc7, 0xc2, 0xcb, 0xc1, + 0xc4, 0xce, 0xc1, 0xc7, 0xc9, 0xc4, 0xcc, 0xca, 0xce, 0xc8, 0xc2, 0xcd, + 0xc0, 0xcf, 0xc6, 0xcc, 0xca, 0xc9, 0xcd, 0xc0, 0xcf, 0xc3, 0xc3, 0xc5, + 0xc5, 0xc6, 0xc8, 0xcb, + }, +}; + +const uint32_t ip_maskl[8][256] = +{ + { + 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000100, 0x00000101, + 0x00000100, 0x00000101, 0x00000000, 0x00000001, 0x00000000, 0x00000001, + 0x00000100, 0x00000101, 0x00000100, 0x00000101, 0x00010000, 0x00010001, + 0x00010000, 0x00010001, 0x00010100, 0x00010101, 0x00010100, 0x00010101, + 0x00010000, 0x00010001, 0x00010000, 0x00010001, 0x00010100, 0x00010101, + 0x00010100, 0x00010101, 0x00000000, 0x00000001, 0x00000000, 0x00000001, + 0x00000100, 0x00000101, 0x00000100, 0x00000101, 0x00000000, 0x00000001, + 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00000100, 0x00000101, + 0x00010000, 0x00010001, 0x00010000, 0x00010001, 0x00010100, 0x00010101, + 0x00010100, 0x00010101, 0x00010000, 0x00010001, 0x00010000, 0x00010001, + 0x00010100, 0x00010101, 0x00010100, 0x00010101, 0x01000000, 0x01000001, + 0x01000000, 0x01000001, 0x01000100, 0x01000101, 0x01000100, 0x01000101, + 0x01000000, 0x01000001, 0x01000000, 0x01000001, 0x01000100, 0x01000101, + 0x01000100, 0x01000101, 0x01010000, 0x01010001, 0x01010000, 0x01010001, + 0x01010100, 0x01010101, 0x01010100, 0x01010101, 0x01010000, 0x01010001, + 0x01010000, 0x01010001, 0x01010100, 0x01010101, 0x01010100, 0x01010101, + 0x01000000, 0x01000001, 0x01000000, 0x01000001, 0x01000100, 0x01000101, + 0x01000100, 0x01000101, 0x01000000, 0x01000001, 0x01000000, 0x01000001, + 0x01000100, 0x01000101, 0x01000100, 0x01000101, 0x01010000, 0x01010001, + 0x01010000, 0x01010001, 0x01010100, 0x01010101, 0x01010100, 0x01010101, + 0x01010000, 0x01010001, 0x01010000, 0x01010001, 0x01010100, 0x01010101, + 0x01010100, 0x01010101, 0x00000000, 0x00000001, 0x00000000, 0x00000001, + 0x00000100, 0x00000101, 0x00000100, 0x00000101, 0x00000000, 0x00000001, + 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00000100, 0x00000101, + 0x00010000, 0x00010001, 0x00010000, 0x00010001, 0x00010100, 0x00010101, + 0x00010100, 0x00010101, 0x00010000, 0x00010001, 0x00010000, 0x00010001, + 0x00010100, 0x00010101, 0x00010100, 0x00010101, 0x00000000, 0x00000001, + 0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00000100, 0x00000101, + 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000100, 0x00000101, + 0x00000100, 0x00000101, 0x00010000, 0x00010001, 0x00010000, 0x00010001, + 0x00010100, 0x00010101, 0x00010100, 0x00010101, 0x00010000, 0x00010001, + 0x00010000, 0x00010001, 0x00010100, 0x00010101, 0x00010100, 0x00010101, + 0x01000000, 0x01000001, 0x01000000, 0x01000001, 0x01000100, 0x01000101, + 0x01000100, 0x01000101, 0x01000000, 0x01000001, 0x01000000, 0x01000001, + 0x01000100, 0x01000101, 0x01000100, 0x01000101, 0x01010000, 0x01010001, + 0x01010000, 0x01010001, 0x01010100, 0x01010101, 0x01010100, 0x01010101, + 0x01010000, 0x01010001, 0x01010000, 0x01010001, 0x01010100, 0x01010101, + 0x01010100, 0x01010101, 0x01000000, 0x01000001, 0x01000000, 0x01000001, + 0x01000100, 0x01000101, 0x01000100, 0x01000101, 0x01000000, 0x01000001, + 0x01000000, 0x01000001, 0x01000100, 0x01000101, 0x01000100, 0x01000101, + 0x01010000, 0x01010001, 0x01010000, 0x01010001, 0x01010100, 0x01010101, + 0x01010100, 0x01010101, 0x01010000, 0x01010001, 0x01010000, 0x01010001, + 0x01010100, 0x01010101, 0x01010100, 0x01010101, + }, + { + 0x00000000, 0x00000002, 0x00000000, 0x00000002, 0x00000200, 0x00000202, + 0x00000200, 0x00000202, 0x00000000, 0x00000002, 0x00000000, 0x00000002, + 0x00000200, 0x00000202, 0x00000200, 0x00000202, 0x00020000, 0x00020002, + 0x00020000, 0x00020002, 0x00020200, 0x00020202, 0x00020200, 0x00020202, + 0x00020000, 0x00020002, 0x00020000, 0x00020002, 0x00020200, 0x00020202, + 0x00020200, 0x00020202, 0x00000000, 0x00000002, 0x00000000, 0x00000002, + 0x00000200, 0x00000202, 0x00000200, 0x00000202, 0x00000000, 0x00000002, + 0x00000000, 0x00000002, 0x00000200, 0x00000202, 0x00000200, 0x00000202, + 0x00020000, 0x00020002, 0x00020000, 0x00020002, 0x00020200, 0x00020202, + 0x00020200, 0x00020202, 0x00020000, 0x00020002, 0x00020000, 0x00020002, + 0x00020200, 0x00020202, 0x00020200, 0x00020202, 0x02000000, 0x02000002, + 0x02000000, 0x02000002, 0x02000200, 0x02000202, 0x02000200, 0x02000202, + 0x02000000, 0x02000002, 0x02000000, 0x02000002, 0x02000200, 0x02000202, + 0x02000200, 0x02000202, 0x02020000, 0x02020002, 0x02020000, 0x02020002, + 0x02020200, 0x02020202, 0x02020200, 0x02020202, 0x02020000, 0x02020002, + 0x02020000, 0x02020002, 0x02020200, 0x02020202, 0x02020200, 0x02020202, + 0x02000000, 0x02000002, 0x02000000, 0x02000002, 0x02000200, 0x02000202, + 0x02000200, 0x02000202, 0x02000000, 0x02000002, 0x02000000, 0x02000002, + 0x02000200, 0x02000202, 0x02000200, 0x02000202, 0x02020000, 0x02020002, + 0x02020000, 0x02020002, 0x02020200, 0x02020202, 0x02020200, 0x02020202, + 0x02020000, 0x02020002, 0x02020000, 0x02020002, 0x02020200, 0x02020202, + 0x02020200, 0x02020202, 0x00000000, 0x00000002, 0x00000000, 0x00000002, + 0x00000200, 0x00000202, 0x00000200, 0x00000202, 0x00000000, 0x00000002, + 0x00000000, 0x00000002, 0x00000200, 0x00000202, 0x00000200, 0x00000202, + 0x00020000, 0x00020002, 0x00020000, 0x00020002, 0x00020200, 0x00020202, + 0x00020200, 0x00020202, 0x00020000, 0x00020002, 0x00020000, 0x00020002, + 0x00020200, 0x00020202, 0x00020200, 0x00020202, 0x00000000, 0x00000002, + 0x00000000, 0x00000002, 0x00000200, 0x00000202, 0x00000200, 0x00000202, + 0x00000000, 0x00000002, 0x00000000, 0x00000002, 0x00000200, 0x00000202, + 0x00000200, 0x00000202, 0x00020000, 0x00020002, 0x00020000, 0x00020002, + 0x00020200, 0x00020202, 0x00020200, 0x00020202, 0x00020000, 0x00020002, + 0x00020000, 0x00020002, 0x00020200, 0x00020202, 0x00020200, 0x00020202, + 0x02000000, 0x02000002, 0x02000000, 0x02000002, 0x02000200, 0x02000202, + 0x02000200, 0x02000202, 0x02000000, 0x02000002, 0x02000000, 0x02000002, + 0x02000200, 0x02000202, 0x02000200, 0x02000202, 0x02020000, 0x02020002, + 0x02020000, 0x02020002, 0x02020200, 0x02020202, 0x02020200, 0x02020202, + 0x02020000, 0x02020002, 0x02020000, 0x02020002, 0x02020200, 0x02020202, + 0x02020200, 0x02020202, 0x02000000, 0x02000002, 0x02000000, 0x02000002, + 0x02000200, 0x02000202, 0x02000200, 0x02000202, 0x02000000, 0x02000002, + 0x02000000, 0x02000002, 0x02000200, 0x02000202, 0x02000200, 0x02000202, + 0x02020000, 0x02020002, 0x02020000, 0x02020002, 0x02020200, 0x02020202, + 0x02020200, 0x02020202, 0x02020000, 0x02020002, 0x02020000, 0x02020002, + 0x02020200, 0x02020202, 0x02020200, 0x02020202, + }, + { + 0x00000000, 0x00000004, 0x00000000, 0x00000004, 0x00000400, 0x00000404, + 0x00000400, 0x00000404, 0x00000000, 0x00000004, 0x00000000, 0x00000004, + 0x00000400, 0x00000404, 0x00000400, 0x00000404, 0x00040000, 0x00040004, + 0x00040000, 0x00040004, 0x00040400, 0x00040404, 0x00040400, 0x00040404, + 0x00040000, 0x00040004, 0x00040000, 0x00040004, 0x00040400, 0x00040404, + 0x00040400, 0x00040404, 0x00000000, 0x00000004, 0x00000000, 0x00000004, + 0x00000400, 0x00000404, 0x00000400, 0x00000404, 0x00000000, 0x00000004, + 0x00000000, 0x00000004, 0x00000400, 0x00000404, 0x00000400, 0x00000404, + 0x00040000, 0x00040004, 0x00040000, 0x00040004, 0x00040400, 0x00040404, + 0x00040400, 0x00040404, 0x00040000, 0x00040004, 0x00040000, 0x00040004, + 0x00040400, 0x00040404, 0x00040400, 0x00040404, 0x04000000, 0x04000004, + 0x04000000, 0x04000004, 0x04000400, 0x04000404, 0x04000400, 0x04000404, + 0x04000000, 0x04000004, 0x04000000, 0x04000004, 0x04000400, 0x04000404, + 0x04000400, 0x04000404, 0x04040000, 0x04040004, 0x04040000, 0x04040004, + 0x04040400, 0x04040404, 0x04040400, 0x04040404, 0x04040000, 0x04040004, + 0x04040000, 0x04040004, 0x04040400, 0x04040404, 0x04040400, 0x04040404, + 0x04000000, 0x04000004, 0x04000000, 0x04000004, 0x04000400, 0x04000404, + 0x04000400, 0x04000404, 0x04000000, 0x04000004, 0x04000000, 0x04000004, + 0x04000400, 0x04000404, 0x04000400, 0x04000404, 0x04040000, 0x04040004, + 0x04040000, 0x04040004, 0x04040400, 0x04040404, 0x04040400, 0x04040404, + 0x04040000, 0x04040004, 0x04040000, 0x04040004, 0x04040400, 0x04040404, + 0x04040400, 0x04040404, 0x00000000, 0x00000004, 0x00000000, 0x00000004, + 0x00000400, 0x00000404, 0x00000400, 0x00000404, 0x00000000, 0x00000004, + 0x00000000, 0x00000004, 0x00000400, 0x00000404, 0x00000400, 0x00000404, + 0x00040000, 0x00040004, 0x00040000, 0x00040004, 0x00040400, 0x00040404, + 0x00040400, 0x00040404, 0x00040000, 0x00040004, 0x00040000, 0x00040004, + 0x00040400, 0x00040404, 0x00040400, 0x00040404, 0x00000000, 0x00000004, + 0x00000000, 0x00000004, 0x00000400, 0x00000404, 0x00000400, 0x00000404, + 0x00000000, 0x00000004, 0x00000000, 0x00000004, 0x00000400, 0x00000404, + 0x00000400, 0x00000404, 0x00040000, 0x00040004, 0x00040000, 0x00040004, + 0x00040400, 0x00040404, 0x00040400, 0x00040404, 0x00040000, 0x00040004, + 0x00040000, 0x00040004, 0x00040400, 0x00040404, 0x00040400, 0x00040404, + 0x04000000, 0x04000004, 0x04000000, 0x04000004, 0x04000400, 0x04000404, + 0x04000400, 0x04000404, 0x04000000, 0x04000004, 0x04000000, 0x04000004, + 0x04000400, 0x04000404, 0x04000400, 0x04000404, 0x04040000, 0x04040004, + 0x04040000, 0x04040004, 0x04040400, 0x04040404, 0x04040400, 0x04040404, + 0x04040000, 0x04040004, 0x04040000, 0x04040004, 0x04040400, 0x04040404, + 0x04040400, 0x04040404, 0x04000000, 0x04000004, 0x04000000, 0x04000004, + 0x04000400, 0x04000404, 0x04000400, 0x04000404, 0x04000000, 0x04000004, + 0x04000000, 0x04000004, 0x04000400, 0x04000404, 0x04000400, 0x04000404, + 0x04040000, 0x04040004, 0x04040000, 0x04040004, 0x04040400, 0x04040404, + 0x04040400, 0x04040404, 0x04040000, 0x04040004, 0x04040000, 0x04040004, + 0x04040400, 0x04040404, 0x04040400, 0x04040404, + }, + { + 0x00000000, 0x00000008, 0x00000000, 0x00000008, 0x00000800, 0x00000808, + 0x00000800, 0x00000808, 0x00000000, 0x00000008, 0x00000000, 0x00000008, + 0x00000800, 0x00000808, 0x00000800, 0x00000808, 0x00080000, 0x00080008, + 0x00080000, 0x00080008, 0x00080800, 0x00080808, 0x00080800, 0x00080808, + 0x00080000, 0x00080008, 0x00080000, 0x00080008, 0x00080800, 0x00080808, + 0x00080800, 0x00080808, 0x00000000, 0x00000008, 0x00000000, 0x00000008, + 0x00000800, 0x00000808, 0x00000800, 0x00000808, 0x00000000, 0x00000008, + 0x00000000, 0x00000008, 0x00000800, 0x00000808, 0x00000800, 0x00000808, + 0x00080000, 0x00080008, 0x00080000, 0x00080008, 0x00080800, 0x00080808, + 0x00080800, 0x00080808, 0x00080000, 0x00080008, 0x00080000, 0x00080008, + 0x00080800, 0x00080808, 0x00080800, 0x00080808, 0x08000000, 0x08000008, + 0x08000000, 0x08000008, 0x08000800, 0x08000808, 0x08000800, 0x08000808, + 0x08000000, 0x08000008, 0x08000000, 0x08000008, 0x08000800, 0x08000808, + 0x08000800, 0x08000808, 0x08080000, 0x08080008, 0x08080000, 0x08080008, + 0x08080800, 0x08080808, 0x08080800, 0x08080808, 0x08080000, 0x08080008, + 0x08080000, 0x08080008, 0x08080800, 0x08080808, 0x08080800, 0x08080808, + 0x08000000, 0x08000008, 0x08000000, 0x08000008, 0x08000800, 0x08000808, + 0x08000800, 0x08000808, 0x08000000, 0x08000008, 0x08000000, 0x08000008, + 0x08000800, 0x08000808, 0x08000800, 0x08000808, 0x08080000, 0x08080008, + 0x08080000, 0x08080008, 0x08080800, 0x08080808, 0x08080800, 0x08080808, + 0x08080000, 0x08080008, 0x08080000, 0x08080008, 0x08080800, 0x08080808, + 0x08080800, 0x08080808, 0x00000000, 0x00000008, 0x00000000, 0x00000008, + 0x00000800, 0x00000808, 0x00000800, 0x00000808, 0x00000000, 0x00000008, + 0x00000000, 0x00000008, 0x00000800, 0x00000808, 0x00000800, 0x00000808, + 0x00080000, 0x00080008, 0x00080000, 0x00080008, 0x00080800, 0x00080808, + 0x00080800, 0x00080808, 0x00080000, 0x00080008, 0x00080000, 0x00080008, + 0x00080800, 0x00080808, 0x00080800, 0x00080808, 0x00000000, 0x00000008, + 0x00000000, 0x00000008, 0x00000800, 0x00000808, 0x00000800, 0x00000808, + 0x00000000, 0x00000008, 0x00000000, 0x00000008, 0x00000800, 0x00000808, + 0x00000800, 0x00000808, 0x00080000, 0x00080008, 0x00080000, 0x00080008, + 0x00080800, 0x00080808, 0x00080800, 0x00080808, 0x00080000, 0x00080008, + 0x00080000, 0x00080008, 0x00080800, 0x00080808, 0x00080800, 0x00080808, + 0x08000000, 0x08000008, 0x08000000, 0x08000008, 0x08000800, 0x08000808, + 0x08000800, 0x08000808, 0x08000000, 0x08000008, 0x08000000, 0x08000008, + 0x08000800, 0x08000808, 0x08000800, 0x08000808, 0x08080000, 0x08080008, + 0x08080000, 0x08080008, 0x08080800, 0x08080808, 0x08080800, 0x08080808, + 0x08080000, 0x08080008, 0x08080000, 0x08080008, 0x08080800, 0x08080808, + 0x08080800, 0x08080808, 0x08000000, 0x08000008, 0x08000000, 0x08000008, + 0x08000800, 0x08000808, 0x08000800, 0x08000808, 0x08000000, 0x08000008, + 0x08000000, 0x08000008, 0x08000800, 0x08000808, 0x08000800, 0x08000808, + 0x08080000, 0x08080008, 0x08080000, 0x08080008, 0x08080800, 0x08080808, + 0x08080800, 0x08080808, 0x08080000, 0x08080008, 0x08080000, 0x08080008, + 0x08080800, 0x08080808, 0x08080800, 0x08080808, + }, + { + 0x00000000, 0x00000010, 0x00000000, 0x00000010, 0x00001000, 0x00001010, + 0x00001000, 0x00001010, 0x00000000, 0x00000010, 0x00000000, 0x00000010, + 0x00001000, 0x00001010, 0x00001000, 0x00001010, 0x00100000, 0x00100010, + 0x00100000, 0x00100010, 0x00101000, 0x00101010, 0x00101000, 0x00101010, + 0x00100000, 0x00100010, 0x00100000, 0x00100010, 0x00101000, 0x00101010, + 0x00101000, 0x00101010, 0x00000000, 0x00000010, 0x00000000, 0x00000010, + 0x00001000, 0x00001010, 0x00001000, 0x00001010, 0x00000000, 0x00000010, + 0x00000000, 0x00000010, 0x00001000, 0x00001010, 0x00001000, 0x00001010, + 0x00100000, 0x00100010, 0x00100000, 0x00100010, 0x00101000, 0x00101010, + 0x00101000, 0x00101010, 0x00100000, 0x00100010, 0x00100000, 0x00100010, + 0x00101000, 0x00101010, 0x00101000, 0x00101010, 0x10000000, 0x10000010, + 0x10000000, 0x10000010, 0x10001000, 0x10001010, 0x10001000, 0x10001010, + 0x10000000, 0x10000010, 0x10000000, 0x10000010, 0x10001000, 0x10001010, + 0x10001000, 0x10001010, 0x10100000, 0x10100010, 0x10100000, 0x10100010, + 0x10101000, 0x10101010, 0x10101000, 0x10101010, 0x10100000, 0x10100010, + 0x10100000, 0x10100010, 0x10101000, 0x10101010, 0x10101000, 0x10101010, + 0x10000000, 0x10000010, 0x10000000, 0x10000010, 0x10001000, 0x10001010, + 0x10001000, 0x10001010, 0x10000000, 0x10000010, 0x10000000, 0x10000010, + 0x10001000, 0x10001010, 0x10001000, 0x10001010, 0x10100000, 0x10100010, + 0x10100000, 0x10100010, 0x10101000, 0x10101010, 0x10101000, 0x10101010, + 0x10100000, 0x10100010, 0x10100000, 0x10100010, 0x10101000, 0x10101010, + 0x10101000, 0x10101010, 0x00000000, 0x00000010, 0x00000000, 0x00000010, + 0x00001000, 0x00001010, 0x00001000, 0x00001010, 0x00000000, 0x00000010, + 0x00000000, 0x00000010, 0x00001000, 0x00001010, 0x00001000, 0x00001010, + 0x00100000, 0x00100010, 0x00100000, 0x00100010, 0x00101000, 0x00101010, + 0x00101000, 0x00101010, 0x00100000, 0x00100010, 0x00100000, 0x00100010, + 0x00101000, 0x00101010, 0x00101000, 0x00101010, 0x00000000, 0x00000010, + 0x00000000, 0x00000010, 0x00001000, 0x00001010, 0x00001000, 0x00001010, + 0x00000000, 0x00000010, 0x00000000, 0x00000010, 0x00001000, 0x00001010, + 0x00001000, 0x00001010, 0x00100000, 0x00100010, 0x00100000, 0x00100010, + 0x00101000, 0x00101010, 0x00101000, 0x00101010, 0x00100000, 0x00100010, + 0x00100000, 0x00100010, 0x00101000, 0x00101010, 0x00101000, 0x00101010, + 0x10000000, 0x10000010, 0x10000000, 0x10000010, 0x10001000, 0x10001010, + 0x10001000, 0x10001010, 0x10000000, 0x10000010, 0x10000000, 0x10000010, + 0x10001000, 0x10001010, 0x10001000, 0x10001010, 0x10100000, 0x10100010, + 0x10100000, 0x10100010, 0x10101000, 0x10101010, 0x10101000, 0x10101010, + 0x10100000, 0x10100010, 0x10100000, 0x10100010, 0x10101000, 0x10101010, + 0x10101000, 0x10101010, 0x10000000, 0x10000010, 0x10000000, 0x10000010, + 0x10001000, 0x10001010, 0x10001000, 0x10001010, 0x10000000, 0x10000010, + 0x10000000, 0x10000010, 0x10001000, 0x10001010, 0x10001000, 0x10001010, + 0x10100000, 0x10100010, 0x10100000, 0x10100010, 0x10101000, 0x10101010, + 0x10101000, 0x10101010, 0x10100000, 0x10100010, 0x10100000, 0x10100010, + 0x10101000, 0x10101010, 0x10101000, 0x10101010, + }, + { + 0x00000000, 0x00000020, 0x00000000, 0x00000020, 0x00002000, 0x00002020, + 0x00002000, 0x00002020, 0x00000000, 0x00000020, 0x00000000, 0x00000020, + 0x00002000, 0x00002020, 0x00002000, 0x00002020, 0x00200000, 0x00200020, + 0x00200000, 0x00200020, 0x00202000, 0x00202020, 0x00202000, 0x00202020, + 0x00200000, 0x00200020, 0x00200000, 0x00200020, 0x00202000, 0x00202020, + 0x00202000, 0x00202020, 0x00000000, 0x00000020, 0x00000000, 0x00000020, + 0x00002000, 0x00002020, 0x00002000, 0x00002020, 0x00000000, 0x00000020, + 0x00000000, 0x00000020, 0x00002000, 0x00002020, 0x00002000, 0x00002020, + 0x00200000, 0x00200020, 0x00200000, 0x00200020, 0x00202000, 0x00202020, + 0x00202000, 0x00202020, 0x00200000, 0x00200020, 0x00200000, 0x00200020, + 0x00202000, 0x00202020, 0x00202000, 0x00202020, 0x20000000, 0x20000020, + 0x20000000, 0x20000020, 0x20002000, 0x20002020, 0x20002000, 0x20002020, + 0x20000000, 0x20000020, 0x20000000, 0x20000020, 0x20002000, 0x20002020, + 0x20002000, 0x20002020, 0x20200000, 0x20200020, 0x20200000, 0x20200020, + 0x20202000, 0x20202020, 0x20202000, 0x20202020, 0x20200000, 0x20200020, + 0x20200000, 0x20200020, 0x20202000, 0x20202020, 0x20202000, 0x20202020, + 0x20000000, 0x20000020, 0x20000000, 0x20000020, 0x20002000, 0x20002020, + 0x20002000, 0x20002020, 0x20000000, 0x20000020, 0x20000000, 0x20000020, + 0x20002000, 0x20002020, 0x20002000, 0x20002020, 0x20200000, 0x20200020, + 0x20200000, 0x20200020, 0x20202000, 0x20202020, 0x20202000, 0x20202020, + 0x20200000, 0x20200020, 0x20200000, 0x20200020, 0x20202000, 0x20202020, + 0x20202000, 0x20202020, 0x00000000, 0x00000020, 0x00000000, 0x00000020, + 0x00002000, 0x00002020, 0x00002000, 0x00002020, 0x00000000, 0x00000020, + 0x00000000, 0x00000020, 0x00002000, 0x00002020, 0x00002000, 0x00002020, + 0x00200000, 0x00200020, 0x00200000, 0x00200020, 0x00202000, 0x00202020, + 0x00202000, 0x00202020, 0x00200000, 0x00200020, 0x00200000, 0x00200020, + 0x00202000, 0x00202020, 0x00202000, 0x00202020, 0x00000000, 0x00000020, + 0x00000000, 0x00000020, 0x00002000, 0x00002020, 0x00002000, 0x00002020, + 0x00000000, 0x00000020, 0x00000000, 0x00000020, 0x00002000, 0x00002020, + 0x00002000, 0x00002020, 0x00200000, 0x00200020, 0x00200000, 0x00200020, + 0x00202000, 0x00202020, 0x00202000, 0x00202020, 0x00200000, 0x00200020, + 0x00200000, 0x00200020, 0x00202000, 0x00202020, 0x00202000, 0x00202020, + 0x20000000, 0x20000020, 0x20000000, 0x20000020, 0x20002000, 0x20002020, + 0x20002000, 0x20002020, 0x20000000, 0x20000020, 0x20000000, 0x20000020, + 0x20002000, 0x20002020, 0x20002000, 0x20002020, 0x20200000, 0x20200020, + 0x20200000, 0x20200020, 0x20202000, 0x20202020, 0x20202000, 0x20202020, + 0x20200000, 0x20200020, 0x20200000, 0x20200020, 0x20202000, 0x20202020, + 0x20202000, 0x20202020, 0x20000000, 0x20000020, 0x20000000, 0x20000020, + 0x20002000, 0x20002020, 0x20002000, 0x20002020, 0x20000000, 0x20000020, + 0x20000000, 0x20000020, 0x20002000, 0x20002020, 0x20002000, 0x20002020, + 0x20200000, 0x20200020, 0x20200000, 0x20200020, 0x20202000, 0x20202020, + 0x20202000, 0x20202020, 0x20200000, 0x20200020, 0x20200000, 0x20200020, + 0x20202000, 0x20202020, 0x20202000, 0x20202020, + }, + { + 0x00000000, 0x00000040, 0x00000000, 0x00000040, 0x00004000, 0x00004040, + 0x00004000, 0x00004040, 0x00000000, 0x00000040, 0x00000000, 0x00000040, + 0x00004000, 0x00004040, 0x00004000, 0x00004040, 0x00400000, 0x00400040, + 0x00400000, 0x00400040, 0x00404000, 0x00404040, 0x00404000, 0x00404040, + 0x00400000, 0x00400040, 0x00400000, 0x00400040, 0x00404000, 0x00404040, + 0x00404000, 0x00404040, 0x00000000, 0x00000040, 0x00000000, 0x00000040, + 0x00004000, 0x00004040, 0x00004000, 0x00004040, 0x00000000, 0x00000040, + 0x00000000, 0x00000040, 0x00004000, 0x00004040, 0x00004000, 0x00004040, + 0x00400000, 0x00400040, 0x00400000, 0x00400040, 0x00404000, 0x00404040, + 0x00404000, 0x00404040, 0x00400000, 0x00400040, 0x00400000, 0x00400040, + 0x00404000, 0x00404040, 0x00404000, 0x00404040, 0x40000000, 0x40000040, + 0x40000000, 0x40000040, 0x40004000, 0x40004040, 0x40004000, 0x40004040, + 0x40000000, 0x40000040, 0x40000000, 0x40000040, 0x40004000, 0x40004040, + 0x40004000, 0x40004040, 0x40400000, 0x40400040, 0x40400000, 0x40400040, + 0x40404000, 0x40404040, 0x40404000, 0x40404040, 0x40400000, 0x40400040, + 0x40400000, 0x40400040, 0x40404000, 0x40404040, 0x40404000, 0x40404040, + 0x40000000, 0x40000040, 0x40000000, 0x40000040, 0x40004000, 0x40004040, + 0x40004000, 0x40004040, 0x40000000, 0x40000040, 0x40000000, 0x40000040, + 0x40004000, 0x40004040, 0x40004000, 0x40004040, 0x40400000, 0x40400040, + 0x40400000, 0x40400040, 0x40404000, 0x40404040, 0x40404000, 0x40404040, + 0x40400000, 0x40400040, 0x40400000, 0x40400040, 0x40404000, 0x40404040, + 0x40404000, 0x40404040, 0x00000000, 0x00000040, 0x00000000, 0x00000040, + 0x00004000, 0x00004040, 0x00004000, 0x00004040, 0x00000000, 0x00000040, + 0x00000000, 0x00000040, 0x00004000, 0x00004040, 0x00004000, 0x00004040, + 0x00400000, 0x00400040, 0x00400000, 0x00400040, 0x00404000, 0x00404040, + 0x00404000, 0x00404040, 0x00400000, 0x00400040, 0x00400000, 0x00400040, + 0x00404000, 0x00404040, 0x00404000, 0x00404040, 0x00000000, 0x00000040, + 0x00000000, 0x00000040, 0x00004000, 0x00004040, 0x00004000, 0x00004040, + 0x00000000, 0x00000040, 0x00000000, 0x00000040, 0x00004000, 0x00004040, + 0x00004000, 0x00004040, 0x00400000, 0x00400040, 0x00400000, 0x00400040, + 0x00404000, 0x00404040, 0x00404000, 0x00404040, 0x00400000, 0x00400040, + 0x00400000, 0x00400040, 0x00404000, 0x00404040, 0x00404000, 0x00404040, + 0x40000000, 0x40000040, 0x40000000, 0x40000040, 0x40004000, 0x40004040, + 0x40004000, 0x40004040, 0x40000000, 0x40000040, 0x40000000, 0x40000040, + 0x40004000, 0x40004040, 0x40004000, 0x40004040, 0x40400000, 0x40400040, + 0x40400000, 0x40400040, 0x40404000, 0x40404040, 0x40404000, 0x40404040, + 0x40400000, 0x40400040, 0x40400000, 0x40400040, 0x40404000, 0x40404040, + 0x40404000, 0x40404040, 0x40000000, 0x40000040, 0x40000000, 0x40000040, + 0x40004000, 0x40004040, 0x40004000, 0x40004040, 0x40000000, 0x40000040, + 0x40000000, 0x40000040, 0x40004000, 0x40004040, 0x40004000, 0x40004040, + 0x40400000, 0x40400040, 0x40400000, 0x40400040, 0x40404000, 0x40404040, + 0x40404000, 0x40404040, 0x40400000, 0x40400040, 0x40400000, 0x40400040, + 0x40404000, 0x40404040, 0x40404000, 0x40404040, + }, + { + 0x00000000, 0x00000080, 0x00000000, 0x00000080, 0x00008000, 0x00008080, + 0x00008000, 0x00008080, 0x00000000, 0x00000080, 0x00000000, 0x00000080, + 0x00008000, 0x00008080, 0x00008000, 0x00008080, 0x00800000, 0x00800080, + 0x00800000, 0x00800080, 0x00808000, 0x00808080, 0x00808000, 0x00808080, + 0x00800000, 0x00800080, 0x00800000, 0x00800080, 0x00808000, 0x00808080, + 0x00808000, 0x00808080, 0x00000000, 0x00000080, 0x00000000, 0x00000080, + 0x00008000, 0x00008080, 0x00008000, 0x00008080, 0x00000000, 0x00000080, + 0x00000000, 0x00000080, 0x00008000, 0x00008080, 0x00008000, 0x00008080, + 0x00800000, 0x00800080, 0x00800000, 0x00800080, 0x00808000, 0x00808080, + 0x00808000, 0x00808080, 0x00800000, 0x00800080, 0x00800000, 0x00800080, + 0x00808000, 0x00808080, 0x00808000, 0x00808080, 0x80000000, 0x80000080, + 0x80000000, 0x80000080, 0x80008000, 0x80008080, 0x80008000, 0x80008080, + 0x80000000, 0x80000080, 0x80000000, 0x80000080, 0x80008000, 0x80008080, + 0x80008000, 0x80008080, 0x80800000, 0x80800080, 0x80800000, 0x80800080, + 0x80808000, 0x80808080, 0x80808000, 0x80808080, 0x80800000, 0x80800080, + 0x80800000, 0x80800080, 0x80808000, 0x80808080, 0x80808000, 0x80808080, + 0x80000000, 0x80000080, 0x80000000, 0x80000080, 0x80008000, 0x80008080, + 0x80008000, 0x80008080, 0x80000000, 0x80000080, 0x80000000, 0x80000080, + 0x80008000, 0x80008080, 0x80008000, 0x80008080, 0x80800000, 0x80800080, + 0x80800000, 0x80800080, 0x80808000, 0x80808080, 0x80808000, 0x80808080, + 0x80800000, 0x80800080, 0x80800000, 0x80800080, 0x80808000, 0x80808080, + 0x80808000, 0x80808080, 0x00000000, 0x00000080, 0x00000000, 0x00000080, + 0x00008000, 0x00008080, 0x00008000, 0x00008080, 0x00000000, 0x00000080, + 0x00000000, 0x00000080, 0x00008000, 0x00008080, 0x00008000, 0x00008080, + 0x00800000, 0x00800080, 0x00800000, 0x00800080, 0x00808000, 0x00808080, + 0x00808000, 0x00808080, 0x00800000, 0x00800080, 0x00800000, 0x00800080, + 0x00808000, 0x00808080, 0x00808000, 0x00808080, 0x00000000, 0x00000080, + 0x00000000, 0x00000080, 0x00008000, 0x00008080, 0x00008000, 0x00008080, + 0x00000000, 0x00000080, 0x00000000, 0x00000080, 0x00008000, 0x00008080, + 0x00008000, 0x00008080, 0x00800000, 0x00800080, 0x00800000, 0x00800080, + 0x00808000, 0x00808080, 0x00808000, 0x00808080, 0x00800000, 0x00800080, + 0x00800000, 0x00800080, 0x00808000, 0x00808080, 0x00808000, 0x00808080, + 0x80000000, 0x80000080, 0x80000000, 0x80000080, 0x80008000, 0x80008080, + 0x80008000, 0x80008080, 0x80000000, 0x80000080, 0x80000000, 0x80000080, + 0x80008000, 0x80008080, 0x80008000, 0x80008080, 0x80800000, 0x80800080, + 0x80800000, 0x80800080, 0x80808000, 0x80808080, 0x80808000, 0x80808080, + 0x80800000, 0x80800080, 0x80800000, 0x80800080, 0x80808000, 0x80808080, + 0x80808000, 0x80808080, 0x80000000, 0x80000080, 0x80000000, 0x80000080, + 0x80008000, 0x80008080, 0x80008000, 0x80008080, 0x80000000, 0x80000080, + 0x80000000, 0x80000080, 0x80008000, 0x80008080, 0x80008000, 0x80008080, + 0x80800000, 0x80800080, 0x80800000, 0x80800080, 0x80808000, 0x80808080, + 0x80808000, 0x80808080, 0x80800000, 0x80800080, 0x80800000, 0x80800080, + 0x80808000, 0x80808080, 0x80808000, 0x80808080, + }, +}; + +const uint32_t ip_maskr[8][256] = +{ + { + 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000, + 0x00000001, 0x00000001, 0x00000100, 0x00000100, 0x00000101, 0x00000101, + 0x00000100, 0x00000100, 0x00000101, 0x00000101, 0x00000000, 0x00000000, + 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, + 0x00000100, 0x00000100, 0x00000101, 0x00000101, 0x00000100, 0x00000100, + 0x00000101, 0x00000101, 0x00010000, 0x00010000, 0x00010001, 0x00010001, + 0x00010000, 0x00010000, 0x00010001, 0x00010001, 0x00010100, 0x00010100, + 0x00010101, 0x00010101, 0x00010100, 0x00010100, 0x00010101, 0x00010101, + 0x00010000, 0x00010000, 0x00010001, 0x00010001, 0x00010000, 0x00010000, + 0x00010001, 0x00010001, 0x00010100, 0x00010100, 0x00010101, 0x00010101, + 0x00010100, 0x00010100, 0x00010101, 0x00010101, 0x00000000, 0x00000000, + 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, + 0x00000100, 0x00000100, 0x00000101, 0x00000101, 0x00000100, 0x00000100, + 0x00000101, 0x00000101, 0x00000000, 0x00000000, 0x00000001, 0x00000001, + 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000100, 0x00000100, + 0x00000101, 0x00000101, 0x00000100, 0x00000100, 0x00000101, 0x00000101, + 0x00010000, 0x00010000, 0x00010001, 0x00010001, 0x00010000, 0x00010000, + 0x00010001, 0x00010001, 0x00010100, 0x00010100, 0x00010101, 0x00010101, + 0x00010100, 0x00010100, 0x00010101, 0x00010101, 0x00010000, 0x00010000, + 0x00010001, 0x00010001, 0x00010000, 0x00010000, 0x00010001, 0x00010001, + 0x00010100, 0x00010100, 0x00010101, 0x00010101, 0x00010100, 0x00010100, + 0x00010101, 0x00010101, 0x01000000, 0x01000000, 0x01000001, 0x01000001, + 0x01000000, 0x01000000, 0x01000001, 0x01000001, 0x01000100, 0x01000100, + 0x01000101, 0x01000101, 0x01000100, 0x01000100, 0x01000101, 0x01000101, + 0x01000000, 0x01000000, 0x01000001, 0x01000001, 0x01000000, 0x01000000, + 0x01000001, 0x01000001, 0x01000100, 0x01000100, 0x01000101, 0x01000101, + 0x01000100, 0x01000100, 0x01000101, 0x01000101, 0x01010000, 0x01010000, + 0x01010001, 0x01010001, 0x01010000, 0x01010000, 0x01010001, 0x01010001, + 0x01010100, 0x01010100, 0x01010101, 0x01010101, 0x01010100, 0x01010100, + 0x01010101, 0x01010101, 0x01010000, 0x01010000, 0x01010001, 0x01010001, + 0x01010000, 0x01010000, 0x01010001, 0x01010001, 0x01010100, 0x01010100, + 0x01010101, 0x01010101, 0x01010100, 0x01010100, 0x01010101, 0x01010101, + 0x01000000, 0x01000000, 0x01000001, 0x01000001, 0x01000000, 0x01000000, + 0x01000001, 0x01000001, 0x01000100, 0x01000100, 0x01000101, 0x01000101, + 0x01000100, 0x01000100, 0x01000101, 0x01000101, 0x01000000, 0x01000000, + 0x01000001, 0x01000001, 0x01000000, 0x01000000, 0x01000001, 0x01000001, + 0x01000100, 0x01000100, 0x01000101, 0x01000101, 0x01000100, 0x01000100, + 0x01000101, 0x01000101, 0x01010000, 0x01010000, 0x01010001, 0x01010001, + 0x01010000, 0x01010000, 0x01010001, 0x01010001, 0x01010100, 0x01010100, + 0x01010101, 0x01010101, 0x01010100, 0x01010100, 0x01010101, 0x01010101, + 0x01010000, 0x01010000, 0x01010001, 0x01010001, 0x01010000, 0x01010000, + 0x01010001, 0x01010001, 0x01010100, 0x01010100, 0x01010101, 0x01010101, + 0x01010100, 0x01010100, 0x01010101, 0x01010101, + }, + { + 0x00000000, 0x00000000, 0x00000002, 0x00000002, 0x00000000, 0x00000000, + 0x00000002, 0x00000002, 0x00000200, 0x00000200, 0x00000202, 0x00000202, + 0x00000200, 0x00000200, 0x00000202, 0x00000202, 0x00000000, 0x00000000, + 0x00000002, 0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000002, + 0x00000200, 0x00000200, 0x00000202, 0x00000202, 0x00000200, 0x00000200, + 0x00000202, 0x00000202, 0x00020000, 0x00020000, 0x00020002, 0x00020002, + 0x00020000, 0x00020000, 0x00020002, 0x00020002, 0x00020200, 0x00020200, + 0x00020202, 0x00020202, 0x00020200, 0x00020200, 0x00020202, 0x00020202, + 0x00020000, 0x00020000, 0x00020002, 0x00020002, 0x00020000, 0x00020000, + 0x00020002, 0x00020002, 0x00020200, 0x00020200, 0x00020202, 0x00020202, + 0x00020200, 0x00020200, 0x00020202, 0x00020202, 0x00000000, 0x00000000, + 0x00000002, 0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000002, + 0x00000200, 0x00000200, 0x00000202, 0x00000202, 0x00000200, 0x00000200, + 0x00000202, 0x00000202, 0x00000000, 0x00000000, 0x00000002, 0x00000002, + 0x00000000, 0x00000000, 0x00000002, 0x00000002, 0x00000200, 0x00000200, + 0x00000202, 0x00000202, 0x00000200, 0x00000200, 0x00000202, 0x00000202, + 0x00020000, 0x00020000, 0x00020002, 0x00020002, 0x00020000, 0x00020000, + 0x00020002, 0x00020002, 0x00020200, 0x00020200, 0x00020202, 0x00020202, + 0x00020200, 0x00020200, 0x00020202, 0x00020202, 0x00020000, 0x00020000, + 0x00020002, 0x00020002, 0x00020000, 0x00020000, 0x00020002, 0x00020002, + 0x00020200, 0x00020200, 0x00020202, 0x00020202, 0x00020200, 0x00020200, + 0x00020202, 0x00020202, 0x02000000, 0x02000000, 0x02000002, 0x02000002, + 0x02000000, 0x02000000, 0x02000002, 0x02000002, 0x02000200, 0x02000200, + 0x02000202, 0x02000202, 0x02000200, 0x02000200, 0x02000202, 0x02000202, + 0x02000000, 0x02000000, 0x02000002, 0x02000002, 0x02000000, 0x02000000, + 0x02000002, 0x02000002, 0x02000200, 0x02000200, 0x02000202, 0x02000202, + 0x02000200, 0x02000200, 0x02000202, 0x02000202, 0x02020000, 0x02020000, + 0x02020002, 0x02020002, 0x02020000, 0x02020000, 0x02020002, 0x02020002, + 0x02020200, 0x02020200, 0x02020202, 0x02020202, 0x02020200, 0x02020200, + 0x02020202, 0x02020202, 0x02020000, 0x02020000, 0x02020002, 0x02020002, + 0x02020000, 0x02020000, 0x02020002, 0x02020002, 0x02020200, 0x02020200, + 0x02020202, 0x02020202, 0x02020200, 0x02020200, 0x02020202, 0x02020202, + 0x02000000, 0x02000000, 0x02000002, 0x02000002, 0x02000000, 0x02000000, + 0x02000002, 0x02000002, 0x02000200, 0x02000200, 0x02000202, 0x02000202, + 0x02000200, 0x02000200, 0x02000202, 0x02000202, 0x02000000, 0x02000000, + 0x02000002, 0x02000002, 0x02000000, 0x02000000, 0x02000002, 0x02000002, + 0x02000200, 0x02000200, 0x02000202, 0x02000202, 0x02000200, 0x02000200, + 0x02000202, 0x02000202, 0x02020000, 0x02020000, 0x02020002, 0x02020002, + 0x02020000, 0x02020000, 0x02020002, 0x02020002, 0x02020200, 0x02020200, + 0x02020202, 0x02020202, 0x02020200, 0x02020200, 0x02020202, 0x02020202, + 0x02020000, 0x02020000, 0x02020002, 0x02020002, 0x02020000, 0x02020000, + 0x02020002, 0x02020002, 0x02020200, 0x02020200, 0x02020202, 0x02020202, + 0x02020200, 0x02020200, 0x02020202, 0x02020202, + }, + { + 0x00000000, 0x00000000, 0x00000004, 0x00000004, 0x00000000, 0x00000000, + 0x00000004, 0x00000004, 0x00000400, 0x00000400, 0x00000404, 0x00000404, + 0x00000400, 0x00000400, 0x00000404, 0x00000404, 0x00000000, 0x00000000, + 0x00000004, 0x00000004, 0x00000000, 0x00000000, 0x00000004, 0x00000004, + 0x00000400, 0x00000400, 0x00000404, 0x00000404, 0x00000400, 0x00000400, + 0x00000404, 0x00000404, 0x00040000, 0x00040000, 0x00040004, 0x00040004, + 0x00040000, 0x00040000, 0x00040004, 0x00040004, 0x00040400, 0x00040400, + 0x00040404, 0x00040404, 0x00040400, 0x00040400, 0x00040404, 0x00040404, + 0x00040000, 0x00040000, 0x00040004, 0x00040004, 0x00040000, 0x00040000, + 0x00040004, 0x00040004, 0x00040400, 0x00040400, 0x00040404, 0x00040404, + 0x00040400, 0x00040400, 0x00040404, 0x00040404, 0x00000000, 0x00000000, + 0x00000004, 0x00000004, 0x00000000, 0x00000000, 0x00000004, 0x00000004, + 0x00000400, 0x00000400, 0x00000404, 0x00000404, 0x00000400, 0x00000400, + 0x00000404, 0x00000404, 0x00000000, 0x00000000, 0x00000004, 0x00000004, + 0x00000000, 0x00000000, 0x00000004, 0x00000004, 0x00000400, 0x00000400, + 0x00000404, 0x00000404, 0x00000400, 0x00000400, 0x00000404, 0x00000404, + 0x00040000, 0x00040000, 0x00040004, 0x00040004, 0x00040000, 0x00040000, + 0x00040004, 0x00040004, 0x00040400, 0x00040400, 0x00040404, 0x00040404, + 0x00040400, 0x00040400, 0x00040404, 0x00040404, 0x00040000, 0x00040000, + 0x00040004, 0x00040004, 0x00040000, 0x00040000, 0x00040004, 0x00040004, + 0x00040400, 0x00040400, 0x00040404, 0x00040404, 0x00040400, 0x00040400, + 0x00040404, 0x00040404, 0x04000000, 0x04000000, 0x04000004, 0x04000004, + 0x04000000, 0x04000000, 0x04000004, 0x04000004, 0x04000400, 0x04000400, + 0x04000404, 0x04000404, 0x04000400, 0x04000400, 0x04000404, 0x04000404, + 0x04000000, 0x04000000, 0x04000004, 0x04000004, 0x04000000, 0x04000000, + 0x04000004, 0x04000004, 0x04000400, 0x04000400, 0x04000404, 0x04000404, + 0x04000400, 0x04000400, 0x04000404, 0x04000404, 0x04040000, 0x04040000, + 0x04040004, 0x04040004, 0x04040000, 0x04040000, 0x04040004, 0x04040004, + 0x04040400, 0x04040400, 0x04040404, 0x04040404, 0x04040400, 0x04040400, + 0x04040404, 0x04040404, 0x04040000, 0x04040000, 0x04040004, 0x04040004, + 0x04040000, 0x04040000, 0x04040004, 0x04040004, 0x04040400, 0x04040400, + 0x04040404, 0x04040404, 0x04040400, 0x04040400, 0x04040404, 0x04040404, + 0x04000000, 0x04000000, 0x04000004, 0x04000004, 0x04000000, 0x04000000, + 0x04000004, 0x04000004, 0x04000400, 0x04000400, 0x04000404, 0x04000404, + 0x04000400, 0x04000400, 0x04000404, 0x04000404, 0x04000000, 0x04000000, + 0x04000004, 0x04000004, 0x04000000, 0x04000000, 0x04000004, 0x04000004, + 0x04000400, 0x04000400, 0x04000404, 0x04000404, 0x04000400, 0x04000400, + 0x04000404, 0x04000404, 0x04040000, 0x04040000, 0x04040004, 0x04040004, + 0x04040000, 0x04040000, 0x04040004, 0x04040004, 0x04040400, 0x04040400, + 0x04040404, 0x04040404, 0x04040400, 0x04040400, 0x04040404, 0x04040404, + 0x04040000, 0x04040000, 0x04040004, 0x04040004, 0x04040000, 0x04040000, + 0x04040004, 0x04040004, 0x04040400, 0x04040400, 0x04040404, 0x04040404, + 0x04040400, 0x04040400, 0x04040404, 0x04040404, + }, + { + 0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000000, 0x00000000, + 0x00000008, 0x00000008, 0x00000800, 0x00000800, 0x00000808, 0x00000808, + 0x00000800, 0x00000800, 0x00000808, 0x00000808, 0x00000000, 0x00000000, + 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000008, 0x00000008, + 0x00000800, 0x00000800, 0x00000808, 0x00000808, 0x00000800, 0x00000800, + 0x00000808, 0x00000808, 0x00080000, 0x00080000, 0x00080008, 0x00080008, + 0x00080000, 0x00080000, 0x00080008, 0x00080008, 0x00080800, 0x00080800, + 0x00080808, 0x00080808, 0x00080800, 0x00080800, 0x00080808, 0x00080808, + 0x00080000, 0x00080000, 0x00080008, 0x00080008, 0x00080000, 0x00080000, + 0x00080008, 0x00080008, 0x00080800, 0x00080800, 0x00080808, 0x00080808, + 0x00080800, 0x00080800, 0x00080808, 0x00080808, 0x00000000, 0x00000000, + 0x00000008, 0x00000008, 0x00000000, 0x00000000, 0x00000008, 0x00000008, + 0x00000800, 0x00000800, 0x00000808, 0x00000808, 0x00000800, 0x00000800, + 0x00000808, 0x00000808, 0x00000000, 0x00000000, 0x00000008, 0x00000008, + 0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000800, 0x00000800, + 0x00000808, 0x00000808, 0x00000800, 0x00000800, 0x00000808, 0x00000808, + 0x00080000, 0x00080000, 0x00080008, 0x00080008, 0x00080000, 0x00080000, + 0x00080008, 0x00080008, 0x00080800, 0x00080800, 0x00080808, 0x00080808, + 0x00080800, 0x00080800, 0x00080808, 0x00080808, 0x00080000, 0x00080000, + 0x00080008, 0x00080008, 0x00080000, 0x00080000, 0x00080008, 0x00080008, + 0x00080800, 0x00080800, 0x00080808, 0x00080808, 0x00080800, 0x00080800, + 0x00080808, 0x00080808, 0x08000000, 0x08000000, 0x08000008, 0x08000008, + 0x08000000, 0x08000000, 0x08000008, 0x08000008, 0x08000800, 0x08000800, + 0x08000808, 0x08000808, 0x08000800, 0x08000800, 0x08000808, 0x08000808, + 0x08000000, 0x08000000, 0x08000008, 0x08000008, 0x08000000, 0x08000000, + 0x08000008, 0x08000008, 0x08000800, 0x08000800, 0x08000808, 0x08000808, + 0x08000800, 0x08000800, 0x08000808, 0x08000808, 0x08080000, 0x08080000, + 0x08080008, 0x08080008, 0x08080000, 0x08080000, 0x08080008, 0x08080008, + 0x08080800, 0x08080800, 0x08080808, 0x08080808, 0x08080800, 0x08080800, + 0x08080808, 0x08080808, 0x08080000, 0x08080000, 0x08080008, 0x08080008, + 0x08080000, 0x08080000, 0x08080008, 0x08080008, 0x08080800, 0x08080800, + 0x08080808, 0x08080808, 0x08080800, 0x08080800, 0x08080808, 0x08080808, + 0x08000000, 0x08000000, 0x08000008, 0x08000008, 0x08000000, 0x08000000, + 0x08000008, 0x08000008, 0x08000800, 0x08000800, 0x08000808, 0x08000808, + 0x08000800, 0x08000800, 0x08000808, 0x08000808, 0x08000000, 0x08000000, + 0x08000008, 0x08000008, 0x08000000, 0x08000000, 0x08000008, 0x08000008, + 0x08000800, 0x08000800, 0x08000808, 0x08000808, 0x08000800, 0x08000800, + 0x08000808, 0x08000808, 0x08080000, 0x08080000, 0x08080008, 0x08080008, + 0x08080000, 0x08080000, 0x08080008, 0x08080008, 0x08080800, 0x08080800, + 0x08080808, 0x08080808, 0x08080800, 0x08080800, 0x08080808, 0x08080808, + 0x08080000, 0x08080000, 0x08080008, 0x08080008, 0x08080000, 0x08080000, + 0x08080008, 0x08080008, 0x08080800, 0x08080800, 0x08080808, 0x08080808, + 0x08080800, 0x08080800, 0x08080808, 0x08080808, + }, + { + 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000000, 0x00000000, + 0x00000010, 0x00000010, 0x00001000, 0x00001000, 0x00001010, 0x00001010, + 0x00001000, 0x00001000, 0x00001010, 0x00001010, 0x00000000, 0x00000000, + 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000010, 0x00000010, + 0x00001000, 0x00001000, 0x00001010, 0x00001010, 0x00001000, 0x00001000, + 0x00001010, 0x00001010, 0x00100000, 0x00100000, 0x00100010, 0x00100010, + 0x00100000, 0x00100000, 0x00100010, 0x00100010, 0x00101000, 0x00101000, + 0x00101010, 0x00101010, 0x00101000, 0x00101000, 0x00101010, 0x00101010, + 0x00100000, 0x00100000, 0x00100010, 0x00100010, 0x00100000, 0x00100000, + 0x00100010, 0x00100010, 0x00101000, 0x00101000, 0x00101010, 0x00101010, + 0x00101000, 0x00101000, 0x00101010, 0x00101010, 0x00000000, 0x00000000, + 0x00000010, 0x00000010, 0x00000000, 0x00000000, 0x00000010, 0x00000010, + 0x00001000, 0x00001000, 0x00001010, 0x00001010, 0x00001000, 0x00001000, + 0x00001010, 0x00001010, 0x00000000, 0x00000000, 0x00000010, 0x00000010, + 0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00001000, 0x00001000, + 0x00001010, 0x00001010, 0x00001000, 0x00001000, 0x00001010, 0x00001010, + 0x00100000, 0x00100000, 0x00100010, 0x00100010, 0x00100000, 0x00100000, + 0x00100010, 0x00100010, 0x00101000, 0x00101000, 0x00101010, 0x00101010, + 0x00101000, 0x00101000, 0x00101010, 0x00101010, 0x00100000, 0x00100000, + 0x00100010, 0x00100010, 0x00100000, 0x00100000, 0x00100010, 0x00100010, + 0x00101000, 0x00101000, 0x00101010, 0x00101010, 0x00101000, 0x00101000, + 0x00101010, 0x00101010, 0x10000000, 0x10000000, 0x10000010, 0x10000010, + 0x10000000, 0x10000000, 0x10000010, 0x10000010, 0x10001000, 0x10001000, + 0x10001010, 0x10001010, 0x10001000, 0x10001000, 0x10001010, 0x10001010, + 0x10000000, 0x10000000, 0x10000010, 0x10000010, 0x10000000, 0x10000000, + 0x10000010, 0x10000010, 0x10001000, 0x10001000, 0x10001010, 0x10001010, + 0x10001000, 0x10001000, 0x10001010, 0x10001010, 0x10100000, 0x10100000, + 0x10100010, 0x10100010, 0x10100000, 0x10100000, 0x10100010, 0x10100010, + 0x10101000, 0x10101000, 0x10101010, 0x10101010, 0x10101000, 0x10101000, + 0x10101010, 0x10101010, 0x10100000, 0x10100000, 0x10100010, 0x10100010, + 0x10100000, 0x10100000, 0x10100010, 0x10100010, 0x10101000, 0x10101000, + 0x10101010, 0x10101010, 0x10101000, 0x10101000, 0x10101010, 0x10101010, + 0x10000000, 0x10000000, 0x10000010, 0x10000010, 0x10000000, 0x10000000, + 0x10000010, 0x10000010, 0x10001000, 0x10001000, 0x10001010, 0x10001010, + 0x10001000, 0x10001000, 0x10001010, 0x10001010, 0x10000000, 0x10000000, + 0x10000010, 0x10000010, 0x10000000, 0x10000000, 0x10000010, 0x10000010, + 0x10001000, 0x10001000, 0x10001010, 0x10001010, 0x10001000, 0x10001000, + 0x10001010, 0x10001010, 0x10100000, 0x10100000, 0x10100010, 0x10100010, + 0x10100000, 0x10100000, 0x10100010, 0x10100010, 0x10101000, 0x10101000, + 0x10101010, 0x10101010, 0x10101000, 0x10101000, 0x10101010, 0x10101010, + 0x10100000, 0x10100000, 0x10100010, 0x10100010, 0x10100000, 0x10100000, + 0x10100010, 0x10100010, 0x10101000, 0x10101000, 0x10101010, 0x10101010, + 0x10101000, 0x10101000, 0x10101010, 0x10101010, + }, + { + 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000000, 0x00000000, + 0x00000020, 0x00000020, 0x00002000, 0x00002000, 0x00002020, 0x00002020, + 0x00002000, 0x00002000, 0x00002020, 0x00002020, 0x00000000, 0x00000000, + 0x00000020, 0x00000020, 0x00000000, 0x00000000, 0x00000020, 0x00000020, + 0x00002000, 0x00002000, 0x00002020, 0x00002020, 0x00002000, 0x00002000, + 0x00002020, 0x00002020, 0x00200000, 0x00200000, 0x00200020, 0x00200020, + 0x00200000, 0x00200000, 0x00200020, 0x00200020, 0x00202000, 0x00202000, + 0x00202020, 0x00202020, 0x00202000, 0x00202000, 0x00202020, 0x00202020, + 0x00200000, 0x00200000, 0x00200020, 0x00200020, 0x00200000, 0x00200000, + 0x00200020, 0x00200020, 0x00202000, 0x00202000, 0x00202020, 0x00202020, + 0x00202000, 0x00202000, 0x00202020, 0x00202020, 0x00000000, 0x00000000, + 0x00000020, 0x00000020, 0x00000000, 0x00000000, 0x00000020, 0x00000020, + 0x00002000, 0x00002000, 0x00002020, 0x00002020, 0x00002000, 0x00002000, + 0x00002020, 0x00002020, 0x00000000, 0x00000000, 0x00000020, 0x00000020, + 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00002000, 0x00002000, + 0x00002020, 0x00002020, 0x00002000, 0x00002000, 0x00002020, 0x00002020, + 0x00200000, 0x00200000, 0x00200020, 0x00200020, 0x00200000, 0x00200000, + 0x00200020, 0x00200020, 0x00202000, 0x00202000, 0x00202020, 0x00202020, + 0x00202000, 0x00202000, 0x00202020, 0x00202020, 0x00200000, 0x00200000, + 0x00200020, 0x00200020, 0x00200000, 0x00200000, 0x00200020, 0x00200020, + 0x00202000, 0x00202000, 0x00202020, 0x00202020, 0x00202000, 0x00202000, + 0x00202020, 0x00202020, 0x20000000, 0x20000000, 0x20000020, 0x20000020, + 0x20000000, 0x20000000, 0x20000020, 0x20000020, 0x20002000, 0x20002000, + 0x20002020, 0x20002020, 0x20002000, 0x20002000, 0x20002020, 0x20002020, + 0x20000000, 0x20000000, 0x20000020, 0x20000020, 0x20000000, 0x20000000, + 0x20000020, 0x20000020, 0x20002000, 0x20002000, 0x20002020, 0x20002020, + 0x20002000, 0x20002000, 0x20002020, 0x20002020, 0x20200000, 0x20200000, + 0x20200020, 0x20200020, 0x20200000, 0x20200000, 0x20200020, 0x20200020, + 0x20202000, 0x20202000, 0x20202020, 0x20202020, 0x20202000, 0x20202000, + 0x20202020, 0x20202020, 0x20200000, 0x20200000, 0x20200020, 0x20200020, + 0x20200000, 0x20200000, 0x20200020, 0x20200020, 0x20202000, 0x20202000, + 0x20202020, 0x20202020, 0x20202000, 0x20202000, 0x20202020, 0x20202020, + 0x20000000, 0x20000000, 0x20000020, 0x20000020, 0x20000000, 0x20000000, + 0x20000020, 0x20000020, 0x20002000, 0x20002000, 0x20002020, 0x20002020, + 0x20002000, 0x20002000, 0x20002020, 0x20002020, 0x20000000, 0x20000000, + 0x20000020, 0x20000020, 0x20000000, 0x20000000, 0x20000020, 0x20000020, + 0x20002000, 0x20002000, 0x20002020, 0x20002020, 0x20002000, 0x20002000, + 0x20002020, 0x20002020, 0x20200000, 0x20200000, 0x20200020, 0x20200020, + 0x20200000, 0x20200000, 0x20200020, 0x20200020, 0x20202000, 0x20202000, + 0x20202020, 0x20202020, 0x20202000, 0x20202000, 0x20202020, 0x20202020, + 0x20200000, 0x20200000, 0x20200020, 0x20200020, 0x20200000, 0x20200000, + 0x20200020, 0x20200020, 0x20202000, 0x20202000, 0x20202020, 0x20202020, + 0x20202000, 0x20202000, 0x20202020, 0x20202020, + }, + { + 0x00000000, 0x00000000, 0x00000040, 0x00000040, 0x00000000, 0x00000000, + 0x00000040, 0x00000040, 0x00004000, 0x00004000, 0x00004040, 0x00004040, + 0x00004000, 0x00004000, 0x00004040, 0x00004040, 0x00000000, 0x00000000, + 0x00000040, 0x00000040, 0x00000000, 0x00000000, 0x00000040, 0x00000040, + 0x00004000, 0x00004000, 0x00004040, 0x00004040, 0x00004000, 0x00004000, + 0x00004040, 0x00004040, 0x00400000, 0x00400000, 0x00400040, 0x00400040, + 0x00400000, 0x00400000, 0x00400040, 0x00400040, 0x00404000, 0x00404000, + 0x00404040, 0x00404040, 0x00404000, 0x00404000, 0x00404040, 0x00404040, + 0x00400000, 0x00400000, 0x00400040, 0x00400040, 0x00400000, 0x00400000, + 0x00400040, 0x00400040, 0x00404000, 0x00404000, 0x00404040, 0x00404040, + 0x00404000, 0x00404000, 0x00404040, 0x00404040, 0x00000000, 0x00000000, + 0x00000040, 0x00000040, 0x00000000, 0x00000000, 0x00000040, 0x00000040, + 0x00004000, 0x00004000, 0x00004040, 0x00004040, 0x00004000, 0x00004000, + 0x00004040, 0x00004040, 0x00000000, 0x00000000, 0x00000040, 0x00000040, + 0x00000000, 0x00000000, 0x00000040, 0x00000040, 0x00004000, 0x00004000, + 0x00004040, 0x00004040, 0x00004000, 0x00004000, 0x00004040, 0x00004040, + 0x00400000, 0x00400000, 0x00400040, 0x00400040, 0x00400000, 0x00400000, + 0x00400040, 0x00400040, 0x00404000, 0x00404000, 0x00404040, 0x00404040, + 0x00404000, 0x00404000, 0x00404040, 0x00404040, 0x00400000, 0x00400000, + 0x00400040, 0x00400040, 0x00400000, 0x00400000, 0x00400040, 0x00400040, + 0x00404000, 0x00404000, 0x00404040, 0x00404040, 0x00404000, 0x00404000, + 0x00404040, 0x00404040, 0x40000000, 0x40000000, 0x40000040, 0x40000040, + 0x40000000, 0x40000000, 0x40000040, 0x40000040, 0x40004000, 0x40004000, + 0x40004040, 0x40004040, 0x40004000, 0x40004000, 0x40004040, 0x40004040, + 0x40000000, 0x40000000, 0x40000040, 0x40000040, 0x40000000, 0x40000000, + 0x40000040, 0x40000040, 0x40004000, 0x40004000, 0x40004040, 0x40004040, + 0x40004000, 0x40004000, 0x40004040, 0x40004040, 0x40400000, 0x40400000, + 0x40400040, 0x40400040, 0x40400000, 0x40400000, 0x40400040, 0x40400040, + 0x40404000, 0x40404000, 0x40404040, 0x40404040, 0x40404000, 0x40404000, + 0x40404040, 0x40404040, 0x40400000, 0x40400000, 0x40400040, 0x40400040, + 0x40400000, 0x40400000, 0x40400040, 0x40400040, 0x40404000, 0x40404000, + 0x40404040, 0x40404040, 0x40404000, 0x40404000, 0x40404040, 0x40404040, + 0x40000000, 0x40000000, 0x40000040, 0x40000040, 0x40000000, 0x40000000, + 0x40000040, 0x40000040, 0x40004000, 0x40004000, 0x40004040, 0x40004040, + 0x40004000, 0x40004000, 0x40004040, 0x40004040, 0x40000000, 0x40000000, + 0x40000040, 0x40000040, 0x40000000, 0x40000000, 0x40000040, 0x40000040, + 0x40004000, 0x40004000, 0x40004040, 0x40004040, 0x40004000, 0x40004000, + 0x40004040, 0x40004040, 0x40400000, 0x40400000, 0x40400040, 0x40400040, + 0x40400000, 0x40400000, 0x40400040, 0x40400040, 0x40404000, 0x40404000, + 0x40404040, 0x40404040, 0x40404000, 0x40404000, 0x40404040, 0x40404040, + 0x40400000, 0x40400000, 0x40400040, 0x40400040, 0x40400000, 0x40400000, + 0x40400040, 0x40400040, 0x40404000, 0x40404000, 0x40404040, 0x40404040, + 0x40404000, 0x40404000, 0x40404040, 0x40404040, + }, + { + 0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00000000, 0x00000000, + 0x00000080, 0x00000080, 0x00008000, 0x00008000, 0x00008080, 0x00008080, + 0x00008000, 0x00008000, 0x00008080, 0x00008080, 0x00000000, 0x00000000, + 0x00000080, 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x00000080, + 0x00008000, 0x00008000, 0x00008080, 0x00008080, 0x00008000, 0x00008000, + 0x00008080, 0x00008080, 0x00800000, 0x00800000, 0x00800080, 0x00800080, + 0x00800000, 0x00800000, 0x00800080, 0x00800080, 0x00808000, 0x00808000, + 0x00808080, 0x00808080, 0x00808000, 0x00808000, 0x00808080, 0x00808080, + 0x00800000, 0x00800000, 0x00800080, 0x00800080, 0x00800000, 0x00800000, + 0x00800080, 0x00800080, 0x00808000, 0x00808000, 0x00808080, 0x00808080, + 0x00808000, 0x00808000, 0x00808080, 0x00808080, 0x00000000, 0x00000000, + 0x00000080, 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x00000080, + 0x00008000, 0x00008000, 0x00008080, 0x00008080, 0x00008000, 0x00008000, + 0x00008080, 0x00008080, 0x00000000, 0x00000000, 0x00000080, 0x00000080, + 0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00008000, 0x00008000, + 0x00008080, 0x00008080, 0x00008000, 0x00008000, 0x00008080, 0x00008080, + 0x00800000, 0x00800000, 0x00800080, 0x00800080, 0x00800000, 0x00800000, + 0x00800080, 0x00800080, 0x00808000, 0x00808000, 0x00808080, 0x00808080, + 0x00808000, 0x00808000, 0x00808080, 0x00808080, 0x00800000, 0x00800000, + 0x00800080, 0x00800080, 0x00800000, 0x00800000, 0x00800080, 0x00800080, + 0x00808000, 0x00808000, 0x00808080, 0x00808080, 0x00808000, 0x00808000, + 0x00808080, 0x00808080, 0x80000000, 0x80000000, 0x80000080, 0x80000080, + 0x80000000, 0x80000000, 0x80000080, 0x80000080, 0x80008000, 0x80008000, + 0x80008080, 0x80008080, 0x80008000, 0x80008000, 0x80008080, 0x80008080, + 0x80000000, 0x80000000, 0x80000080, 0x80000080, 0x80000000, 0x80000000, + 0x80000080, 0x80000080, 0x80008000, 0x80008000, 0x80008080, 0x80008080, + 0x80008000, 0x80008000, 0x80008080, 0x80008080, 0x80800000, 0x80800000, + 0x80800080, 0x80800080, 0x80800000, 0x80800000, 0x80800080, 0x80800080, + 0x80808000, 0x80808000, 0x80808080, 0x80808080, 0x80808000, 0x80808000, + 0x80808080, 0x80808080, 0x80800000, 0x80800000, 0x80800080, 0x80800080, + 0x80800000, 0x80800000, 0x80800080, 0x80800080, 0x80808000, 0x80808000, + 0x80808080, 0x80808080, 0x80808000, 0x80808000, 0x80808080, 0x80808080, + 0x80000000, 0x80000000, 0x80000080, 0x80000080, 0x80000000, 0x80000000, + 0x80000080, 0x80000080, 0x80008000, 0x80008000, 0x80008080, 0x80008080, + 0x80008000, 0x80008000, 0x80008080, 0x80008080, 0x80000000, 0x80000000, + 0x80000080, 0x80000080, 0x80000000, 0x80000000, 0x80000080, 0x80000080, + 0x80008000, 0x80008000, 0x80008080, 0x80008080, 0x80008000, 0x80008000, + 0x80008080, 0x80008080, 0x80800000, 0x80800000, 0x80800080, 0x80800080, + 0x80800000, 0x80800000, 0x80800080, 0x80800080, 0x80808000, 0x80808000, + 0x80808080, 0x80808080, 0x80808000, 0x80808000, 0x80808080, 0x80808080, + 0x80800000, 0x80800000, 0x80800080, 0x80800080, 0x80800000, 0x80800000, + 0x80800080, 0x80800080, 0x80808000, 0x80808000, 0x80808080, 0x80808080, + 0x80808000, 0x80808000, 0x80808080, 0x80808080, + }, +}; + +const uint32_t fp_maskl[8][256] = +{ + { + 0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000, + 0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040, + 0x00004040, 0x40004040, 0x00404040, 0x40404040, 0x00000000, 0x40000000, + 0x00400000, 0x40400000, 0x00004000, 0x40004000, 0x00404000, 0x40404000, + 0x00000040, 0x40000040, 0x00400040, 0x40400040, 0x00004040, 0x40004040, + 0x00404040, 0x40404040, 0x00000000, 0x40000000, 0x00400000, 0x40400000, + 0x00004000, 0x40004000, 0x00404000, 0x40404000, 0x00000040, 0x40000040, + 0x00400040, 0x40400040, 0x00004040, 0x40004040, 0x00404040, 0x40404040, + 0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000, + 0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040, + 0x00004040, 0x40004040, 0x00404040, 0x40404040, 0x00000000, 0x40000000, + 0x00400000, 0x40400000, 0x00004000, 0x40004000, 0x00404000, 0x40404000, + 0x00000040, 0x40000040, 0x00400040, 0x40400040, 0x00004040, 0x40004040, + 0x00404040, 0x40404040, 0x00000000, 0x40000000, 0x00400000, 0x40400000, + 0x00004000, 0x40004000, 0x00404000, 0x40404000, 0x00000040, 0x40000040, + 0x00400040, 0x40400040, 0x00004040, 0x40004040, 0x00404040, 0x40404040, + 0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000, + 0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040, + 0x00004040, 0x40004040, 0x00404040, 0x40404040, 0x00000000, 0x40000000, + 0x00400000, 0x40400000, 0x00004000, 0x40004000, 0x00404000, 0x40404000, + 0x00000040, 0x40000040, 0x00400040, 0x40400040, 0x00004040, 0x40004040, + 0x00404040, 0x40404040, 0x00000000, 0x40000000, 0x00400000, 0x40400000, + 0x00004000, 0x40004000, 0x00404000, 0x40404000, 0x00000040, 0x40000040, + 0x00400040, 0x40400040, 0x00004040, 0x40004040, 0x00404040, 0x40404040, + 0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000, + 0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040, + 0x00004040, 0x40004040, 0x00404040, 0x40404040, 0x00000000, 0x40000000, + 0x00400000, 0x40400000, 0x00004000, 0x40004000, 0x00404000, 0x40404000, + 0x00000040, 0x40000040, 0x00400040, 0x40400040, 0x00004040, 0x40004040, + 0x00404040, 0x40404040, 0x00000000, 0x40000000, 0x00400000, 0x40400000, + 0x00004000, 0x40004000, 0x00404000, 0x40404000, 0x00000040, 0x40000040, + 0x00400040, 0x40400040, 0x00004040, 0x40004040, 0x00404040, 0x40404040, + 0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000, + 0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040, + 0x00004040, 0x40004040, 0x00404040, 0x40404040, 0x00000000, 0x40000000, + 0x00400000, 0x40400000, 0x00004000, 0x40004000, 0x00404000, 0x40404000, + 0x00000040, 0x40000040, 0x00400040, 0x40400040, 0x00004040, 0x40004040, + 0x00404040, 0x40404040, 0x00000000, 0x40000000, 0x00400000, 0x40400000, + 0x00004000, 0x40004000, 0x00404000, 0x40404000, 0x00000040, 0x40000040, + 0x00400040, 0x40400040, 0x00004040, 0x40004040, 0x00404040, 0x40404040, + 0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000, + 0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040, + 0x00004040, 0x40004040, 0x00404040, 0x40404040, + }, + { + 0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000, + 0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010, + 0x00001010, 0x10001010, 0x00101010, 0x10101010, 0x00000000, 0x10000000, + 0x00100000, 0x10100000, 0x00001000, 0x10001000, 0x00101000, 0x10101000, + 0x00000010, 0x10000010, 0x00100010, 0x10100010, 0x00001010, 0x10001010, + 0x00101010, 0x10101010, 0x00000000, 0x10000000, 0x00100000, 0x10100000, + 0x00001000, 0x10001000, 0x00101000, 0x10101000, 0x00000010, 0x10000010, + 0x00100010, 0x10100010, 0x00001010, 0x10001010, 0x00101010, 0x10101010, + 0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000, + 0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010, + 0x00001010, 0x10001010, 0x00101010, 0x10101010, 0x00000000, 0x10000000, + 0x00100000, 0x10100000, 0x00001000, 0x10001000, 0x00101000, 0x10101000, + 0x00000010, 0x10000010, 0x00100010, 0x10100010, 0x00001010, 0x10001010, + 0x00101010, 0x10101010, 0x00000000, 0x10000000, 0x00100000, 0x10100000, + 0x00001000, 0x10001000, 0x00101000, 0x10101000, 0x00000010, 0x10000010, + 0x00100010, 0x10100010, 0x00001010, 0x10001010, 0x00101010, 0x10101010, + 0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000, + 0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010, + 0x00001010, 0x10001010, 0x00101010, 0x10101010, 0x00000000, 0x10000000, + 0x00100000, 0x10100000, 0x00001000, 0x10001000, 0x00101000, 0x10101000, + 0x00000010, 0x10000010, 0x00100010, 0x10100010, 0x00001010, 0x10001010, + 0x00101010, 0x10101010, 0x00000000, 0x10000000, 0x00100000, 0x10100000, + 0x00001000, 0x10001000, 0x00101000, 0x10101000, 0x00000010, 0x10000010, + 0x00100010, 0x10100010, 0x00001010, 0x10001010, 0x00101010, 0x10101010, + 0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000, + 0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010, + 0x00001010, 0x10001010, 0x00101010, 0x10101010, 0x00000000, 0x10000000, + 0x00100000, 0x10100000, 0x00001000, 0x10001000, 0x00101000, 0x10101000, + 0x00000010, 0x10000010, 0x00100010, 0x10100010, 0x00001010, 0x10001010, + 0x00101010, 0x10101010, 0x00000000, 0x10000000, 0x00100000, 0x10100000, + 0x00001000, 0x10001000, 0x00101000, 0x10101000, 0x00000010, 0x10000010, + 0x00100010, 0x10100010, 0x00001010, 0x10001010, 0x00101010, 0x10101010, + 0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000, + 0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010, + 0x00001010, 0x10001010, 0x00101010, 0x10101010, 0x00000000, 0x10000000, + 0x00100000, 0x10100000, 0x00001000, 0x10001000, 0x00101000, 0x10101000, + 0x00000010, 0x10000010, 0x00100010, 0x10100010, 0x00001010, 0x10001010, + 0x00101010, 0x10101010, 0x00000000, 0x10000000, 0x00100000, 0x10100000, + 0x00001000, 0x10001000, 0x00101000, 0x10101000, 0x00000010, 0x10000010, + 0x00100010, 0x10100010, 0x00001010, 0x10001010, 0x00101010, 0x10101010, + 0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000, + 0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010, + 0x00001010, 0x10001010, 0x00101010, 0x10101010, + }, + { + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004, + 0x00000404, 0x04000404, 0x00040404, 0x04040404, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000004, 0x04000004, 0x00040004, 0x04040004, 0x00000404, 0x04000404, + 0x00040404, 0x04040404, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000004, 0x04000004, + 0x00040004, 0x04040004, 0x00000404, 0x04000404, 0x00040404, 0x04040404, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004, + 0x00000404, 0x04000404, 0x00040404, 0x04040404, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000004, 0x04000004, 0x00040004, 0x04040004, 0x00000404, 0x04000404, + 0x00040404, 0x04040404, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000004, 0x04000004, + 0x00040004, 0x04040004, 0x00000404, 0x04000404, 0x00040404, 0x04040404, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004, + 0x00000404, 0x04000404, 0x00040404, 0x04040404, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000004, 0x04000004, 0x00040004, 0x04040004, 0x00000404, 0x04000404, + 0x00040404, 0x04040404, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000004, 0x04000004, + 0x00040004, 0x04040004, 0x00000404, 0x04000404, 0x00040404, 0x04040404, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004, + 0x00000404, 0x04000404, 0x00040404, 0x04040404, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000004, 0x04000004, 0x00040004, 0x04040004, 0x00000404, 0x04000404, + 0x00040404, 0x04040404, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000004, 0x04000004, + 0x00040004, 0x04040004, 0x00000404, 0x04000404, 0x00040404, 0x04040404, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004, + 0x00000404, 0x04000404, 0x00040404, 0x04040404, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000004, 0x04000004, 0x00040004, 0x04040004, 0x00000404, 0x04000404, + 0x00040404, 0x04040404, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000004, 0x04000004, + 0x00040004, 0x04040004, 0x00000404, 0x04000404, 0x00040404, 0x04040404, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004, + 0x00000404, 0x04000404, 0x00040404, 0x04040404, + }, + { + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, + 0x00010101, 0x01010101, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000001, 0x01000001, + 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, + 0x00010101, 0x01010101, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000001, 0x01000001, + 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, + 0x00010101, 0x01010101, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000001, 0x01000001, + 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, + 0x00010101, 0x01010101, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000001, 0x01000001, + 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000001, 0x01000001, 0x00010001, 0x01010001, 0x00000101, 0x01000101, + 0x00010101, 0x01010101, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000001, 0x01000001, + 0x00010001, 0x01010001, 0x00000101, 0x01000101, 0x00010101, 0x01010101, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001, + 0x00000101, 0x01000101, 0x00010101, 0x01010101, + }, + { + 0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000, + 0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080, + 0x00008080, 0x80008080, 0x00808080, 0x80808080, 0x00000000, 0x80000000, + 0x00800000, 0x80800000, 0x00008000, 0x80008000, 0x00808000, 0x80808000, + 0x00000080, 0x80000080, 0x00800080, 0x80800080, 0x00008080, 0x80008080, + 0x00808080, 0x80808080, 0x00000000, 0x80000000, 0x00800000, 0x80800000, + 0x00008000, 0x80008000, 0x00808000, 0x80808000, 0x00000080, 0x80000080, + 0x00800080, 0x80800080, 0x00008080, 0x80008080, 0x00808080, 0x80808080, + 0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000, + 0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080, + 0x00008080, 0x80008080, 0x00808080, 0x80808080, 0x00000000, 0x80000000, + 0x00800000, 0x80800000, 0x00008000, 0x80008000, 0x00808000, 0x80808000, + 0x00000080, 0x80000080, 0x00800080, 0x80800080, 0x00008080, 0x80008080, + 0x00808080, 0x80808080, 0x00000000, 0x80000000, 0x00800000, 0x80800000, + 0x00008000, 0x80008000, 0x00808000, 0x80808000, 0x00000080, 0x80000080, + 0x00800080, 0x80800080, 0x00008080, 0x80008080, 0x00808080, 0x80808080, + 0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000, + 0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080, + 0x00008080, 0x80008080, 0x00808080, 0x80808080, 0x00000000, 0x80000000, + 0x00800000, 0x80800000, 0x00008000, 0x80008000, 0x00808000, 0x80808000, + 0x00000080, 0x80000080, 0x00800080, 0x80800080, 0x00008080, 0x80008080, + 0x00808080, 0x80808080, 0x00000000, 0x80000000, 0x00800000, 0x80800000, + 0x00008000, 0x80008000, 0x00808000, 0x80808000, 0x00000080, 0x80000080, + 0x00800080, 0x80800080, 0x00008080, 0x80008080, 0x00808080, 0x80808080, + 0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000, + 0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080, + 0x00008080, 0x80008080, 0x00808080, 0x80808080, 0x00000000, 0x80000000, + 0x00800000, 0x80800000, 0x00008000, 0x80008000, 0x00808000, 0x80808000, + 0x00000080, 0x80000080, 0x00800080, 0x80800080, 0x00008080, 0x80008080, + 0x00808080, 0x80808080, 0x00000000, 0x80000000, 0x00800000, 0x80800000, + 0x00008000, 0x80008000, 0x00808000, 0x80808000, 0x00000080, 0x80000080, + 0x00800080, 0x80800080, 0x00008080, 0x80008080, 0x00808080, 0x80808080, + 0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000, + 0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080, + 0x00008080, 0x80008080, 0x00808080, 0x80808080, 0x00000000, 0x80000000, + 0x00800000, 0x80800000, 0x00008000, 0x80008000, 0x00808000, 0x80808000, + 0x00000080, 0x80000080, 0x00800080, 0x80800080, 0x00008080, 0x80008080, + 0x00808080, 0x80808080, 0x00000000, 0x80000000, 0x00800000, 0x80800000, + 0x00008000, 0x80008000, 0x00808000, 0x80808000, 0x00000080, 0x80000080, + 0x00800080, 0x80800080, 0x00008080, 0x80008080, 0x00808080, 0x80808080, + 0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000, + 0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080, + 0x00008080, 0x80008080, 0x00808080, 0x80808080, + }, + { + 0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000, + 0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020, + 0x00002020, 0x20002020, 0x00202020, 0x20202020, 0x00000000, 0x20000000, + 0x00200000, 0x20200000, 0x00002000, 0x20002000, 0x00202000, 0x20202000, + 0x00000020, 0x20000020, 0x00200020, 0x20200020, 0x00002020, 0x20002020, + 0x00202020, 0x20202020, 0x00000000, 0x20000000, 0x00200000, 0x20200000, + 0x00002000, 0x20002000, 0x00202000, 0x20202000, 0x00000020, 0x20000020, + 0x00200020, 0x20200020, 0x00002020, 0x20002020, 0x00202020, 0x20202020, + 0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000, + 0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020, + 0x00002020, 0x20002020, 0x00202020, 0x20202020, 0x00000000, 0x20000000, + 0x00200000, 0x20200000, 0x00002000, 0x20002000, 0x00202000, 0x20202000, + 0x00000020, 0x20000020, 0x00200020, 0x20200020, 0x00002020, 0x20002020, + 0x00202020, 0x20202020, 0x00000000, 0x20000000, 0x00200000, 0x20200000, + 0x00002000, 0x20002000, 0x00202000, 0x20202000, 0x00000020, 0x20000020, + 0x00200020, 0x20200020, 0x00002020, 0x20002020, 0x00202020, 0x20202020, + 0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000, + 0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020, + 0x00002020, 0x20002020, 0x00202020, 0x20202020, 0x00000000, 0x20000000, + 0x00200000, 0x20200000, 0x00002000, 0x20002000, 0x00202000, 0x20202000, + 0x00000020, 0x20000020, 0x00200020, 0x20200020, 0x00002020, 0x20002020, + 0x00202020, 0x20202020, 0x00000000, 0x20000000, 0x00200000, 0x20200000, + 0x00002000, 0x20002000, 0x00202000, 0x20202000, 0x00000020, 0x20000020, + 0x00200020, 0x20200020, 0x00002020, 0x20002020, 0x00202020, 0x20202020, + 0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000, + 0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020, + 0x00002020, 0x20002020, 0x00202020, 0x20202020, 0x00000000, 0x20000000, + 0x00200000, 0x20200000, 0x00002000, 0x20002000, 0x00202000, 0x20202000, + 0x00000020, 0x20000020, 0x00200020, 0x20200020, 0x00002020, 0x20002020, + 0x00202020, 0x20202020, 0x00000000, 0x20000000, 0x00200000, 0x20200000, + 0x00002000, 0x20002000, 0x00202000, 0x20202000, 0x00000020, 0x20000020, + 0x00200020, 0x20200020, 0x00002020, 0x20002020, 0x00202020, 0x20202020, + 0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000, + 0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020, + 0x00002020, 0x20002020, 0x00202020, 0x20202020, 0x00000000, 0x20000000, + 0x00200000, 0x20200000, 0x00002000, 0x20002000, 0x00202000, 0x20202000, + 0x00000020, 0x20000020, 0x00200020, 0x20200020, 0x00002020, 0x20002020, + 0x00202020, 0x20202020, 0x00000000, 0x20000000, 0x00200000, 0x20200000, + 0x00002000, 0x20002000, 0x00202000, 0x20202000, 0x00000020, 0x20000020, + 0x00200020, 0x20200020, 0x00002020, 0x20002020, 0x00202020, 0x20202020, + 0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000, + 0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020, + 0x00002020, 0x20002020, 0x00202020, 0x20202020, + }, + { + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008, + 0x00000808, 0x08000808, 0x00080808, 0x08080808, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000008, 0x08000008, 0x00080008, 0x08080008, 0x00000808, 0x08000808, + 0x00080808, 0x08080808, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000008, 0x08000008, + 0x00080008, 0x08080008, 0x00000808, 0x08000808, 0x00080808, 0x08080808, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008, + 0x00000808, 0x08000808, 0x00080808, 0x08080808, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000008, 0x08000008, 0x00080008, 0x08080008, 0x00000808, 0x08000808, + 0x00080808, 0x08080808, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000008, 0x08000008, + 0x00080008, 0x08080008, 0x00000808, 0x08000808, 0x00080808, 0x08080808, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008, + 0x00000808, 0x08000808, 0x00080808, 0x08080808, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000008, 0x08000008, 0x00080008, 0x08080008, 0x00000808, 0x08000808, + 0x00080808, 0x08080808, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000008, 0x08000008, + 0x00080008, 0x08080008, 0x00000808, 0x08000808, 0x00080808, 0x08080808, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008, + 0x00000808, 0x08000808, 0x00080808, 0x08080808, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000008, 0x08000008, 0x00080008, 0x08080008, 0x00000808, 0x08000808, + 0x00080808, 0x08080808, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000008, 0x08000008, + 0x00080008, 0x08080008, 0x00000808, 0x08000808, 0x00080808, 0x08080808, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008, + 0x00000808, 0x08000808, 0x00080808, 0x08080808, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000008, 0x08000008, 0x00080008, 0x08080008, 0x00000808, 0x08000808, + 0x00080808, 0x08080808, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000008, 0x08000008, + 0x00080008, 0x08080008, 0x00000808, 0x08000808, 0x00080808, 0x08080808, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008, + 0x00000808, 0x08000808, 0x00080808, 0x08080808, + }, + { + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, + 0x00000202, 0x02000202, 0x00020202, 0x02020202, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000002, 0x02000002, 0x00020002, 0x02020002, 0x00000202, 0x02000202, + 0x00020202, 0x02020202, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000002, 0x02000002, + 0x00020002, 0x02020002, 0x00000202, 0x02000202, 0x00020202, 0x02020202, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, + 0x00000202, 0x02000202, 0x00020202, 0x02020202, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000002, 0x02000002, 0x00020002, 0x02020002, 0x00000202, 0x02000202, + 0x00020202, 0x02020202, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000002, 0x02000002, + 0x00020002, 0x02020002, 0x00000202, 0x02000202, 0x00020202, 0x02020202, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, + 0x00000202, 0x02000202, 0x00020202, 0x02020202, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000002, 0x02000002, 0x00020002, 0x02020002, 0x00000202, 0x02000202, + 0x00020202, 0x02020202, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000002, 0x02000002, + 0x00020002, 0x02020002, 0x00000202, 0x02000202, 0x00020202, 0x02020202, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, + 0x00000202, 0x02000202, 0x00020202, 0x02020202, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000002, 0x02000002, 0x00020002, 0x02020002, 0x00000202, 0x02000202, + 0x00020202, 0x02020202, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000002, 0x02000002, + 0x00020002, 0x02020002, 0x00000202, 0x02000202, 0x00020202, 0x02020202, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, + 0x00000202, 0x02000202, 0x00020202, 0x02020202, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000002, 0x02000002, 0x00020002, 0x02020002, 0x00000202, 0x02000202, + 0x00020202, 0x02020202, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000002, 0x02000002, + 0x00020002, 0x02020002, 0x00000202, 0x02000202, 0x00020202, 0x02020202, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, + 0x00000202, 0x02000202, 0x00020202, 0x02020202, + }, +}; + +const uint32_t fp_maskr[8][256] = +{ + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40000000, 0x40000000, + 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, + 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, 0x40000000, + 0x40000000, 0x40000000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, + 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, + 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, + 0x40400000, 0x40400000, 0x40400000, 0x40400000, 0x40400000, 0x40400000, + 0x40400000, 0x40400000, 0x40400000, 0x40400000, 0x40400000, 0x40400000, + 0x40400000, 0x40400000, 0x40400000, 0x40400000, 0x00004000, 0x00004000, + 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x00004000, 0x00004000, 0x40004000, 0x40004000, 0x40004000, 0x40004000, + 0x40004000, 0x40004000, 0x40004000, 0x40004000, 0x40004000, 0x40004000, + 0x40004000, 0x40004000, 0x40004000, 0x40004000, 0x40004000, 0x40004000, + 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, + 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, + 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x40404000, 0x40404000, + 0x40404000, 0x40404000, 0x40404000, 0x40404000, 0x40404000, 0x40404000, + 0x40404000, 0x40404000, 0x40404000, 0x40404000, 0x40404000, 0x40404000, + 0x40404000, 0x40404000, 0x00000040, 0x00000040, 0x00000040, 0x00000040, + 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, + 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, + 0x40000040, 0x40000040, 0x40000040, 0x40000040, 0x40000040, 0x40000040, + 0x40000040, 0x40000040, 0x40000040, 0x40000040, 0x40000040, 0x40000040, + 0x40000040, 0x40000040, 0x40000040, 0x40000040, 0x00400040, 0x00400040, + 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, + 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, + 0x00400040, 0x00400040, 0x40400040, 0x40400040, 0x40400040, 0x40400040, + 0x40400040, 0x40400040, 0x40400040, 0x40400040, 0x40400040, 0x40400040, + 0x40400040, 0x40400040, 0x40400040, 0x40400040, 0x40400040, 0x40400040, + 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, + 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, + 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x40004040, 0x40004040, + 0x40004040, 0x40004040, 0x40004040, 0x40004040, 0x40004040, 0x40004040, + 0x40004040, 0x40004040, 0x40004040, 0x40004040, 0x40004040, 0x40004040, + 0x40004040, 0x40004040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, + 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, + 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, + 0x40404040, 0x40404040, 0x40404040, 0x40404040, 0x40404040, 0x40404040, + 0x40404040, 0x40404040, 0x40404040, 0x40404040, 0x40404040, 0x40404040, + 0x40404040, 0x40404040, 0x40404040, 0x40404040, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, + 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, + 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, + 0x10100000, 0x10100000, 0x10100000, 0x10100000, 0x10100000, 0x10100000, + 0x10100000, 0x10100000, 0x10100000, 0x10100000, 0x10100000, 0x10100000, + 0x10100000, 0x10100000, 0x10100000, 0x10100000, 0x00001000, 0x00001000, + 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, + 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, + 0x00001000, 0x00001000, 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, + 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, + 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x10101000, 0x10101000, + 0x10101000, 0x10101000, 0x10101000, 0x10101000, 0x10101000, 0x10101000, + 0x10101000, 0x10101000, 0x10101000, 0x10101000, 0x10101000, 0x10101000, + 0x10101000, 0x10101000, 0x00000010, 0x00000010, 0x00000010, 0x00000010, + 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, + 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, + 0x10000010, 0x10000010, 0x10000010, 0x10000010, 0x10000010, 0x10000010, + 0x10000010, 0x10000010, 0x10000010, 0x10000010, 0x10000010, 0x10000010, + 0x10000010, 0x10000010, 0x10000010, 0x10000010, 0x00100010, 0x00100010, + 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, + 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, + 0x00100010, 0x00100010, 0x10100010, 0x10100010, 0x10100010, 0x10100010, + 0x10100010, 0x10100010, 0x10100010, 0x10100010, 0x10100010, 0x10100010, + 0x10100010, 0x10100010, 0x10100010, 0x10100010, 0x10100010, 0x10100010, + 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, + 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, + 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x10001010, 0x10001010, + 0x10001010, 0x10001010, 0x10001010, 0x10001010, 0x10001010, 0x10001010, + 0x10001010, 0x10001010, 0x10001010, 0x10001010, 0x10001010, 0x10001010, + 0x10001010, 0x10001010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, + 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, + 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, + 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, + 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, 0x10101010, + 0x10101010, 0x10101010, 0x10101010, 0x10101010, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x04000000, 0x04000000, + 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, + 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, + 0x04000000, 0x04000000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, + 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, + 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040000, + 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x04040000, + 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x04040000, + 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x00000400, 0x00000400, + 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, + 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, + 0x00000400, 0x00000400, 0x04000400, 0x04000400, 0x04000400, 0x04000400, + 0x04000400, 0x04000400, 0x04000400, 0x04000400, 0x04000400, 0x04000400, + 0x04000400, 0x04000400, 0x04000400, 0x04000400, 0x04000400, 0x04000400, + 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x00040400, + 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x00040400, + 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x04040400, 0x04040400, + 0x04040400, 0x04040400, 0x04040400, 0x04040400, 0x04040400, 0x04040400, + 0x04040400, 0x04040400, 0x04040400, 0x04040400, 0x04040400, 0x04040400, + 0x04040400, 0x04040400, 0x00000004, 0x00000004, 0x00000004, 0x00000004, + 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, + 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000004, + 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x04000004, + 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x04000004, + 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x00040004, 0x00040004, + 0x00040004, 0x00040004, 0x00040004, 0x00040004, 0x00040004, 0x00040004, + 0x00040004, 0x00040004, 0x00040004, 0x00040004, 0x00040004, 0x00040004, + 0x00040004, 0x00040004, 0x04040004, 0x04040004, 0x04040004, 0x04040004, + 0x04040004, 0x04040004, 0x04040004, 0x04040004, 0x04040004, 0x04040004, + 0x04040004, 0x04040004, 0x04040004, 0x04040004, 0x04040004, 0x04040004, + 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x00000404, + 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x00000404, + 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x04000404, 0x04000404, + 0x04000404, 0x04000404, 0x04000404, 0x04000404, 0x04000404, 0x04000404, + 0x04000404, 0x04000404, 0x04000404, 0x04000404, 0x04000404, 0x04000404, + 0x04000404, 0x04000404, 0x00040404, 0x00040404, 0x00040404, 0x00040404, + 0x00040404, 0x00040404, 0x00040404, 0x00040404, 0x00040404, 0x00040404, + 0x00040404, 0x00040404, 0x00040404, 0x00040404, 0x00040404, 0x00040404, + 0x04040404, 0x04040404, 0x04040404, 0x04040404, 0x04040404, 0x04040404, + 0x04040404, 0x04040404, 0x04040404, 0x04040404, 0x04040404, 0x04040404, + 0x04040404, 0x04040404, 0x04040404, 0x04040404, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0x01000000, + 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000, + 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000, + 0x01000000, 0x01000000, 0x00010000, 0x00010000, 0x00010000, 0x00010000, + 0x00010000, 0x00010000, 0x00010000, 0x00010000, 0x00010000, 0x00010000, + 0x00010000, 0x00010000, 0x00010000, 0x00010000, 0x00010000, 0x00010000, + 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x01010000, + 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x01010000, + 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x01000100, 0x01000100, 0x01000100, 0x01000100, + 0x01000100, 0x01000100, 0x01000100, 0x01000100, 0x01000100, 0x01000100, + 0x01000100, 0x01000100, 0x01000100, 0x01000100, 0x01000100, 0x01000100, + 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, + 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, + 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x01010100, 0x01010100, + 0x01010100, 0x01010100, 0x01010100, 0x01010100, 0x01010100, 0x01010100, + 0x01010100, 0x01010100, 0x01010100, 0x01010100, 0x01010100, 0x01010100, + 0x01010100, 0x01010100, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x01000001, + 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x01000001, + 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x01010001, 0x01010001, 0x01010001, 0x01010001, + 0x01010001, 0x01010001, 0x01010001, 0x01010001, 0x01010001, 0x01010001, + 0x01010001, 0x01010001, 0x01010001, 0x01010001, 0x01010001, 0x01010001, + 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x00000101, + 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x00000101, + 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x01000101, 0x01000101, + 0x01000101, 0x01000101, 0x01000101, 0x01000101, 0x01000101, 0x01000101, + 0x01000101, 0x01000101, 0x01000101, 0x01000101, 0x01000101, 0x01000101, + 0x01000101, 0x01000101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x01010101, 0x01010101, 0x01010101, 0x01010101, 0x01010101, 0x01010101, + 0x01010101, 0x01010101, 0x01010101, 0x01010101, 0x01010101, 0x01010101, + 0x01010101, 0x01010101, 0x01010101, 0x01010101, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x80000000, + 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, + 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x80000000, + 0x80000000, 0x80000000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, + 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, + 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, + 0x80800000, 0x80800000, 0x80800000, 0x80800000, 0x80800000, 0x80800000, + 0x80800000, 0x80800000, 0x80800000, 0x80800000, 0x80800000, 0x80800000, + 0x80800000, 0x80800000, 0x80800000, 0x80800000, 0x00008000, 0x00008000, + 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, + 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, + 0x00008000, 0x00008000, 0x80008000, 0x80008000, 0x80008000, 0x80008000, + 0x80008000, 0x80008000, 0x80008000, 0x80008000, 0x80008000, 0x80008000, + 0x80008000, 0x80008000, 0x80008000, 0x80008000, 0x80008000, 0x80008000, + 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, + 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, + 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x80808000, 0x80808000, + 0x80808000, 0x80808000, 0x80808000, 0x80808000, 0x80808000, 0x80808000, + 0x80808000, 0x80808000, 0x80808000, 0x80808000, 0x80808000, 0x80808000, + 0x80808000, 0x80808000, 0x00000080, 0x00000080, 0x00000080, 0x00000080, + 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, + 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, + 0x80000080, 0x80000080, 0x80000080, 0x80000080, 0x80000080, 0x80000080, + 0x80000080, 0x80000080, 0x80000080, 0x80000080, 0x80000080, 0x80000080, + 0x80000080, 0x80000080, 0x80000080, 0x80000080, 0x00800080, 0x00800080, + 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, + 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, + 0x00800080, 0x00800080, 0x80800080, 0x80800080, 0x80800080, 0x80800080, + 0x80800080, 0x80800080, 0x80800080, 0x80800080, 0x80800080, 0x80800080, + 0x80800080, 0x80800080, 0x80800080, 0x80800080, 0x80800080, 0x80800080, + 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, + 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, + 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x80008080, 0x80008080, + 0x80008080, 0x80008080, 0x80008080, 0x80008080, 0x80008080, 0x80008080, + 0x80008080, 0x80008080, 0x80008080, 0x80008080, 0x80008080, 0x80008080, + 0x80008080, 0x80008080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, + 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, + 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, + 0x80808080, 0x80808080, 0x80808080, 0x80808080, 0x80808080, 0x80808080, + 0x80808080, 0x80808080, 0x80808080, 0x80808080, 0x80808080, 0x80808080, + 0x80808080, 0x80808080, 0x80808080, 0x80808080, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x20000000, 0x20000000, + 0x20000000, 0x20000000, 0x20000000, 0x20000000, 0x20000000, 0x20000000, + 0x20000000, 0x20000000, 0x20000000, 0x20000000, 0x20000000, 0x20000000, + 0x20000000, 0x20000000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x20200000, 0x20200000, 0x20200000, 0x20200000, 0x20200000, 0x20200000, + 0x20200000, 0x20200000, 0x20200000, 0x20200000, 0x20200000, 0x20200000, + 0x20200000, 0x20200000, 0x20200000, 0x20200000, 0x00002000, 0x00002000, + 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, + 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, + 0x00002000, 0x00002000, 0x20002000, 0x20002000, 0x20002000, 0x20002000, + 0x20002000, 0x20002000, 0x20002000, 0x20002000, 0x20002000, 0x20002000, + 0x20002000, 0x20002000, 0x20002000, 0x20002000, 0x20002000, 0x20002000, + 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, + 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, + 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x20202000, 0x20202000, + 0x20202000, 0x20202000, 0x20202000, 0x20202000, 0x20202000, 0x20202000, + 0x20202000, 0x20202000, 0x20202000, 0x20202000, 0x20202000, 0x20202000, + 0x20202000, 0x20202000, 0x00000020, 0x00000020, 0x00000020, 0x00000020, + 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, + 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, + 0x20000020, 0x20000020, 0x20000020, 0x20000020, 0x20000020, 0x20000020, + 0x20000020, 0x20000020, 0x20000020, 0x20000020, 0x20000020, 0x20000020, + 0x20000020, 0x20000020, 0x20000020, 0x20000020, 0x00200020, 0x00200020, + 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, + 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, + 0x00200020, 0x00200020, 0x20200020, 0x20200020, 0x20200020, 0x20200020, + 0x20200020, 0x20200020, 0x20200020, 0x20200020, 0x20200020, 0x20200020, + 0x20200020, 0x20200020, 0x20200020, 0x20200020, 0x20200020, 0x20200020, + 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, + 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, + 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x20002020, 0x20002020, + 0x20002020, 0x20002020, 0x20002020, 0x20002020, 0x20002020, 0x20002020, + 0x20002020, 0x20002020, 0x20002020, 0x20002020, 0x20002020, 0x20002020, + 0x20002020, 0x20002020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, + 0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, 0x20202020, + 0x20202020, 0x20202020, 0x20202020, 0x20202020, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08000000, 0x08000000, + 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0x08000000, + 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0x08000000, + 0x08000000, 0x08000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x08080000, + 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x08080000, + 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x00000800, 0x00000800, + 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, + 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, + 0x00000800, 0x00000800, 0x08000800, 0x08000800, 0x08000800, 0x08000800, + 0x08000800, 0x08000800, 0x08000800, 0x08000800, 0x08000800, 0x08000800, + 0x08000800, 0x08000800, 0x08000800, 0x08000800, 0x08000800, 0x08000800, + 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x00080800, + 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x00080800, + 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x08080800, 0x08080800, + 0x08080800, 0x08080800, 0x08080800, 0x08080800, 0x08080800, 0x08080800, + 0x08080800, 0x08080800, 0x08080800, 0x08080800, 0x08080800, 0x08080800, + 0x08080800, 0x08080800, 0x00000008, 0x00000008, 0x00000008, 0x00000008, + 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, + 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008, + 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x08000008, + 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x08000008, + 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x00080008, 0x00080008, + 0x00080008, 0x00080008, 0x00080008, 0x00080008, 0x00080008, 0x00080008, + 0x00080008, 0x00080008, 0x00080008, 0x00080008, 0x00080008, 0x00080008, + 0x00080008, 0x00080008, 0x08080008, 0x08080008, 0x08080008, 0x08080008, + 0x08080008, 0x08080008, 0x08080008, 0x08080008, 0x08080008, 0x08080008, + 0x08080008, 0x08080008, 0x08080008, 0x08080008, 0x08080008, 0x08080008, + 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, + 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, + 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x08000808, 0x08000808, + 0x08000808, 0x08000808, 0x08000808, 0x08000808, 0x08000808, 0x08000808, + 0x08000808, 0x08000808, 0x08000808, 0x08000808, 0x08000808, 0x08000808, + 0x08000808, 0x08000808, 0x00080808, 0x00080808, 0x00080808, 0x00080808, + 0x00080808, 0x00080808, 0x00080808, 0x00080808, 0x00080808, 0x00080808, + 0x00080808, 0x00080808, 0x00080808, 0x00080808, 0x00080808, 0x00080808, + 0x08080808, 0x08080808, 0x08080808, 0x08080808, 0x08080808, 0x08080808, + 0x08080808, 0x08080808, 0x08080808, 0x08080808, 0x08080808, 0x08080808, + 0x08080808, 0x08080808, 0x08080808, 0x08080808, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02000000, 0x02000000, + 0x02000000, 0x02000000, 0x02000000, 0x02000000, 0x02000000, 0x02000000, + 0x02000000, 0x02000000, 0x02000000, 0x02000000, 0x02000000, 0x02000000, + 0x02000000, 0x02000000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, + 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, + 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, + 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x02020000, + 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x02020000, + 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x00000200, 0x00000200, + 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, + 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, + 0x00000200, 0x00000200, 0x02000200, 0x02000200, 0x02000200, 0x02000200, + 0x02000200, 0x02000200, 0x02000200, 0x02000200, 0x02000200, 0x02000200, + 0x02000200, 0x02000200, 0x02000200, 0x02000200, 0x02000200, 0x02000200, + 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x00020200, + 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x00020200, + 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x02020200, 0x02020200, + 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200, + 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200, + 0x02020200, 0x02020200, 0x00000002, 0x00000002, 0x00000002, 0x00000002, + 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, + 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, + 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x02000002, + 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x02000002, + 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x00020002, 0x00020002, + 0x00020002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, + 0x00020002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, + 0x00020002, 0x00020002, 0x02020002, 0x02020002, 0x02020002, 0x02020002, + 0x02020002, 0x02020002, 0x02020002, 0x02020002, 0x02020002, 0x02020002, + 0x02020002, 0x02020002, 0x02020002, 0x02020002, 0x02020002, 0x02020002, + 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x00000202, + 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x00000202, + 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x02000202, 0x02000202, + 0x02000202, 0x02000202, 0x02000202, 0x02000202, 0x02000202, 0x02000202, + 0x02000202, 0x02000202, 0x02000202, 0x02000202, 0x02000202, 0x02000202, + 0x02000202, 0x02000202, 0x00020202, 0x00020202, 0x00020202, 0x00020202, + 0x00020202, 0x00020202, 0x00020202, 0x00020202, 0x00020202, 0x00020202, + 0x00020202, 0x00020202, 0x00020202, 0x00020202, 0x00020202, 0x00020202, + 0x02020202, 0x02020202, 0x02020202, 0x02020202, 0x02020202, 0x02020202, + 0x02020202, 0x02020202, 0x02020202, 0x02020202, 0x02020202, 0x02020202, + 0x02020202, 0x02020202, 0x02020202, 0x02020202, + }, +}; + +const uint32_t key_perm_maskl[8][128] = +{ + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000010, 0x00000010, + 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, + 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, + 0x00000010, 0x00000010, 0x00001000, 0x00001000, 0x00001000, 0x00001000, + 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, + 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, 0x00001000, + 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, + 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00001010, + 0x00001010, 0x00001010, 0x00001010, 0x00001010, 0x00100000, 0x00100000, + 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, + 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, 0x00100000, + 0x00100000, 0x00100000, 0x00100010, 0x00100010, 0x00100010, 0x00100010, + 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, + 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, 0x00100010, + 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, + 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101000, + 0x00101000, 0x00101000, 0x00101000, 0x00101000, 0x00101010, 0x00101010, + 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, + 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, 0x00101010, + 0x00101010, 0x00101010, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000020, + 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, + 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020, + 0x00000020, 0x00000020, 0x00002000, 0x00002000, 0x00002000, 0x00002000, + 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, + 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, 0x00002000, + 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, + 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00002020, + 0x00002020, 0x00002020, 0x00002020, 0x00002020, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00200020, 0x00200020, 0x00200020, 0x00200020, + 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, + 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, 0x00200020, + 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, + 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202000, + 0x00202000, 0x00202000, 0x00202000, 0x00202000, 0x00202020, 0x00202020, + 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, 0x00202020, + 0x00202020, 0x00202020, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0x00000040, + 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, + 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, 0x00000040, + 0x00000040, 0x00000040, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, + 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00004040, + 0x00004040, 0x00004040, 0x00004040, 0x00004040, 0x00400000, 0x00400000, + 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, + 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, 0x00400000, + 0x00400000, 0x00400000, 0x00400040, 0x00400040, 0x00400040, 0x00400040, + 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, + 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, 0x00400040, + 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, + 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404000, + 0x00404000, 0x00404000, 0x00404000, 0x00404000, 0x00404040, 0x00404040, + 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, + 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, 0x00404040, + 0x00404040, 0x00404040, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000080, 0x00000080, + 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, + 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, + 0x00000080, 0x00000080, 0x00008000, 0x00008000, 0x00008000, 0x00008000, + 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, + 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, + 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, + 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00008080, + 0x00008080, 0x00008080, 0x00008080, 0x00008080, 0x00800000, 0x00800000, + 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, + 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, 0x00800000, + 0x00800000, 0x00800000, 0x00800080, 0x00800080, 0x00800080, 0x00800080, + 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, + 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, 0x00800080, + 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, + 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808000, + 0x00808000, 0x00808000, 0x00808000, 0x00808000, 0x00808080, 0x00808080, + 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, + 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, 0x00808080, + 0x00808080, 0x00808080, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x00000101, 0x00000101, + 0x00000101, 0x00000101, 0x00010000, 0x00010000, 0x00010000, 0x00010000, + 0x00010000, 0x00010000, 0x00010000, 0x00010000, 0x00010001, 0x00010001, + 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, 0x00010001, + 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, + 0x00010100, 0x00010100, 0x00010101, 0x00010101, 0x00010101, 0x00010101, + 0x00010101, 0x00010101, 0x00010101, 0x00010101, 0x01000000, 0x01000000, + 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000, + 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x01000001, 0x01000001, + 0x01000001, 0x01000001, 0x01000100, 0x01000100, 0x01000100, 0x01000100, + 0x01000100, 0x01000100, 0x01000100, 0x01000100, 0x01000101, 0x01000101, + 0x01000101, 0x01000101, 0x01000101, 0x01000101, 0x01000101, 0x01000101, + 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x01010000, 0x01010000, + 0x01010000, 0x01010000, 0x01010001, 0x01010001, 0x01010001, 0x01010001, + 0x01010001, 0x01010001, 0x01010001, 0x01010001, 0x01010100, 0x01010100, + 0x01010100, 0x01010100, 0x01010100, 0x01010100, 0x01010100, 0x01010100, + 0x01010101, 0x01010101, 0x01010101, 0x01010101, 0x01010101, 0x01010101, + 0x01010101, 0x01010101, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000002, 0x00000002, 0x00000002, 0x00000002, + 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000200, 0x00000200, + 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, 0x00000200, + 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x00000202, 0x00000202, + 0x00000202, 0x00000202, 0x00020000, 0x00020000, 0x00020000, 0x00020000, + 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020002, 0x00020002, + 0x00020002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, 0x00020002, + 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x00020200, 0x00020200, + 0x00020200, 0x00020200, 0x00020202, 0x00020202, 0x00020202, 0x00020202, + 0x00020202, 0x00020202, 0x00020202, 0x00020202, 0x02000000, 0x02000000, + 0x02000000, 0x02000000, 0x02000000, 0x02000000, 0x02000000, 0x02000000, + 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x02000002, 0x02000002, + 0x02000002, 0x02000002, 0x02000200, 0x02000200, 0x02000200, 0x02000200, + 0x02000200, 0x02000200, 0x02000200, 0x02000200, 0x02000202, 0x02000202, + 0x02000202, 0x02000202, 0x02000202, 0x02000202, 0x02000202, 0x02000202, + 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x02020000, 0x02020000, + 0x02020000, 0x02020000, 0x02020002, 0x02020002, 0x02020002, 0x02020002, + 0x02020002, 0x02020002, 0x02020002, 0x02020002, 0x02020200, 0x02020200, + 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200, 0x02020200, + 0x02020202, 0x02020202, 0x02020202, 0x02020202, 0x02020202, 0x02020202, + 0x02020202, 0x02020202, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000004, 0x00000004, 0x00000004, 0x00000004, + 0x00000004, 0x00000004, 0x00000004, 0x00000004, 0x00000400, 0x00000400, + 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, 0x00000400, + 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x00000404, 0x00000404, + 0x00000404, 0x00000404, 0x00040000, 0x00040000, 0x00040000, 0x00040000, + 0x00040000, 0x00040000, 0x00040000, 0x00040000, 0x00040004, 0x00040004, + 0x00040004, 0x00040004, 0x00040004, 0x00040004, 0x00040004, 0x00040004, + 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x00040400, 0x00040400, + 0x00040400, 0x00040400, 0x00040404, 0x00040404, 0x00040404, 0x00040404, + 0x00040404, 0x00040404, 0x00040404, 0x00040404, 0x04000000, 0x04000000, + 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, + 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x04000004, 0x04000004, + 0x04000004, 0x04000004, 0x04000400, 0x04000400, 0x04000400, 0x04000400, + 0x04000400, 0x04000400, 0x04000400, 0x04000400, 0x04000404, 0x04000404, + 0x04000404, 0x04000404, 0x04000404, 0x04000404, 0x04000404, 0x04000404, + 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x04040000, 0x04040000, + 0x04040000, 0x04040000, 0x04040004, 0x04040004, 0x04040004, 0x04040004, + 0x04040004, 0x04040004, 0x04040004, 0x04040004, 0x04040400, 0x04040400, + 0x04040400, 0x04040400, 0x04040400, 0x04040400, 0x04040400, 0x04040400, + 0x04040404, 0x04040404, 0x04040404, 0x04040404, 0x04040404, 0x04040404, + 0x04040404, 0x04040404, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000008, 0x00000008, + 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000800, 0x00000800, + 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800, + 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, + 0x00000808, 0x00000808, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080008, 0x00080008, + 0x00080008, 0x00080008, 0x00080008, 0x00080008, 0x00080008, 0x00080008, + 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x00080800, 0x00080800, + 0x00080800, 0x00080800, 0x00080808, 0x00080808, 0x00080808, 0x00080808, + 0x00080808, 0x00080808, 0x00080808, 0x00080808, 0x08000000, 0x08000000, + 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0x08000000, 0x08000000, + 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x08000008, 0x08000008, + 0x08000008, 0x08000008, 0x08000800, 0x08000800, 0x08000800, 0x08000800, + 0x08000800, 0x08000800, 0x08000800, 0x08000800, 0x08000808, 0x08000808, + 0x08000808, 0x08000808, 0x08000808, 0x08000808, 0x08000808, 0x08000808, + 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x08080000, 0x08080000, + 0x08080000, 0x08080000, 0x08080008, 0x08080008, 0x08080008, 0x08080008, + 0x08080008, 0x08080008, 0x08080008, 0x08080008, 0x08080800, 0x08080800, + 0x08080800, 0x08080800, 0x08080800, 0x08080800, 0x08080800, 0x08080800, + 0x08080808, 0x08080808, 0x08080808, 0x08080808, 0x08080808, 0x08080808, + 0x08080808, 0x08080808, + }, +}; + +const uint32_t key_perm_maskr[8][128] = +{ + { + 0x00000000, 0x00100000, 0x00001000, 0x00101000, 0x00000010, 0x00100010, + 0x00001010, 0x00101010, 0x00000001, 0x00100001, 0x00001001, 0x00101001, + 0x00000011, 0x00100011, 0x00001011, 0x00101011, 0x00000000, 0x00100000, + 0x00001000, 0x00101000, 0x00000010, 0x00100010, 0x00001010, 0x00101010, + 0x00000001, 0x00100001, 0x00001001, 0x00101001, 0x00000011, 0x00100011, + 0x00001011, 0x00101011, 0x00000000, 0x00100000, 0x00001000, 0x00101000, + 0x00000010, 0x00100010, 0x00001010, 0x00101010, 0x00000001, 0x00100001, + 0x00001001, 0x00101001, 0x00000011, 0x00100011, 0x00001011, 0x00101011, + 0x00000000, 0x00100000, 0x00001000, 0x00101000, 0x00000010, 0x00100010, + 0x00001010, 0x00101010, 0x00000001, 0x00100001, 0x00001001, 0x00101001, + 0x00000011, 0x00100011, 0x00001011, 0x00101011, 0x00000000, 0x00100000, + 0x00001000, 0x00101000, 0x00000010, 0x00100010, 0x00001010, 0x00101010, + 0x00000001, 0x00100001, 0x00001001, 0x00101001, 0x00000011, 0x00100011, + 0x00001011, 0x00101011, 0x00000000, 0x00100000, 0x00001000, 0x00101000, + 0x00000010, 0x00100010, 0x00001010, 0x00101010, 0x00000001, 0x00100001, + 0x00001001, 0x00101001, 0x00000011, 0x00100011, 0x00001011, 0x00101011, + 0x00000000, 0x00100000, 0x00001000, 0x00101000, 0x00000010, 0x00100010, + 0x00001010, 0x00101010, 0x00000001, 0x00100001, 0x00001001, 0x00101001, + 0x00000011, 0x00100011, 0x00001011, 0x00101011, 0x00000000, 0x00100000, + 0x00001000, 0x00101000, 0x00000010, 0x00100010, 0x00001010, 0x00101010, + 0x00000001, 0x00100001, 0x00001001, 0x00101001, 0x00000011, 0x00100011, + 0x00001011, 0x00101011, + }, + { + 0x00000000, 0x00200000, 0x00002000, 0x00202000, 0x00000020, 0x00200020, + 0x00002020, 0x00202020, 0x00000002, 0x00200002, 0x00002002, 0x00202002, + 0x00000022, 0x00200022, 0x00002022, 0x00202022, 0x00000000, 0x00200000, + 0x00002000, 0x00202000, 0x00000020, 0x00200020, 0x00002020, 0x00202020, + 0x00000002, 0x00200002, 0x00002002, 0x00202002, 0x00000022, 0x00200022, + 0x00002022, 0x00202022, 0x00000000, 0x00200000, 0x00002000, 0x00202000, + 0x00000020, 0x00200020, 0x00002020, 0x00202020, 0x00000002, 0x00200002, + 0x00002002, 0x00202002, 0x00000022, 0x00200022, 0x00002022, 0x00202022, + 0x00000000, 0x00200000, 0x00002000, 0x00202000, 0x00000020, 0x00200020, + 0x00002020, 0x00202020, 0x00000002, 0x00200002, 0x00002002, 0x00202002, + 0x00000022, 0x00200022, 0x00002022, 0x00202022, 0x00000000, 0x00200000, + 0x00002000, 0x00202000, 0x00000020, 0x00200020, 0x00002020, 0x00202020, + 0x00000002, 0x00200002, 0x00002002, 0x00202002, 0x00000022, 0x00200022, + 0x00002022, 0x00202022, 0x00000000, 0x00200000, 0x00002000, 0x00202000, + 0x00000020, 0x00200020, 0x00002020, 0x00202020, 0x00000002, 0x00200002, + 0x00002002, 0x00202002, 0x00000022, 0x00200022, 0x00002022, 0x00202022, + 0x00000000, 0x00200000, 0x00002000, 0x00202000, 0x00000020, 0x00200020, + 0x00002020, 0x00202020, 0x00000002, 0x00200002, 0x00002002, 0x00202002, + 0x00000022, 0x00200022, 0x00002022, 0x00202022, 0x00000000, 0x00200000, + 0x00002000, 0x00202000, 0x00000020, 0x00200020, 0x00002020, 0x00202020, + 0x00000002, 0x00200002, 0x00002002, 0x00202002, 0x00000022, 0x00200022, + 0x00002022, 0x00202022, + }, + { + 0x00000000, 0x00400000, 0x00004000, 0x00404000, 0x00000040, 0x00400040, + 0x00004040, 0x00404040, 0x00000004, 0x00400004, 0x00004004, 0x00404004, + 0x00000044, 0x00400044, 0x00004044, 0x00404044, 0x00000000, 0x00400000, + 0x00004000, 0x00404000, 0x00000040, 0x00400040, 0x00004040, 0x00404040, + 0x00000004, 0x00400004, 0x00004004, 0x00404004, 0x00000044, 0x00400044, + 0x00004044, 0x00404044, 0x00000000, 0x00400000, 0x00004000, 0x00404000, + 0x00000040, 0x00400040, 0x00004040, 0x00404040, 0x00000004, 0x00400004, + 0x00004004, 0x00404004, 0x00000044, 0x00400044, 0x00004044, 0x00404044, + 0x00000000, 0x00400000, 0x00004000, 0x00404000, 0x00000040, 0x00400040, + 0x00004040, 0x00404040, 0x00000004, 0x00400004, 0x00004004, 0x00404004, + 0x00000044, 0x00400044, 0x00004044, 0x00404044, 0x00000000, 0x00400000, + 0x00004000, 0x00404000, 0x00000040, 0x00400040, 0x00004040, 0x00404040, + 0x00000004, 0x00400004, 0x00004004, 0x00404004, 0x00000044, 0x00400044, + 0x00004044, 0x00404044, 0x00000000, 0x00400000, 0x00004000, 0x00404000, + 0x00000040, 0x00400040, 0x00004040, 0x00404040, 0x00000004, 0x00400004, + 0x00004004, 0x00404004, 0x00000044, 0x00400044, 0x00004044, 0x00404044, + 0x00000000, 0x00400000, 0x00004000, 0x00404000, 0x00000040, 0x00400040, + 0x00004040, 0x00404040, 0x00000004, 0x00400004, 0x00004004, 0x00404004, + 0x00000044, 0x00400044, 0x00004044, 0x00404044, 0x00000000, 0x00400000, + 0x00004000, 0x00404000, 0x00000040, 0x00400040, 0x00004040, 0x00404040, + 0x00000004, 0x00400004, 0x00004004, 0x00404004, 0x00000044, 0x00400044, + 0x00004044, 0x00404044, + }, + { + 0x00000000, 0x00800000, 0x00008000, 0x00808000, 0x00000080, 0x00800080, + 0x00008080, 0x00808080, 0x00000008, 0x00800008, 0x00008008, 0x00808008, + 0x00000088, 0x00800088, 0x00008088, 0x00808088, 0x00000000, 0x00800000, + 0x00008000, 0x00808000, 0x00000080, 0x00800080, 0x00008080, 0x00808080, + 0x00000008, 0x00800008, 0x00008008, 0x00808008, 0x00000088, 0x00800088, + 0x00008088, 0x00808088, 0x00000000, 0x00800000, 0x00008000, 0x00808000, + 0x00000080, 0x00800080, 0x00008080, 0x00808080, 0x00000008, 0x00800008, + 0x00008008, 0x00808008, 0x00000088, 0x00800088, 0x00008088, 0x00808088, + 0x00000000, 0x00800000, 0x00008000, 0x00808000, 0x00000080, 0x00800080, + 0x00008080, 0x00808080, 0x00000008, 0x00800008, 0x00008008, 0x00808008, + 0x00000088, 0x00800088, 0x00008088, 0x00808088, 0x00000000, 0x00800000, + 0x00008000, 0x00808000, 0x00000080, 0x00800080, 0x00008080, 0x00808080, + 0x00000008, 0x00800008, 0x00008008, 0x00808008, 0x00000088, 0x00800088, + 0x00008088, 0x00808088, 0x00000000, 0x00800000, 0x00008000, 0x00808000, + 0x00000080, 0x00800080, 0x00008080, 0x00808080, 0x00000008, 0x00800008, + 0x00008008, 0x00808008, 0x00000088, 0x00800088, 0x00008088, 0x00808088, + 0x00000000, 0x00800000, 0x00008000, 0x00808000, 0x00000080, 0x00800080, + 0x00008080, 0x00808080, 0x00000008, 0x00800008, 0x00008008, 0x00808008, + 0x00000088, 0x00800088, 0x00008088, 0x00808088, 0x00000000, 0x00800000, + 0x00008000, 0x00808000, 0x00000080, 0x00800080, 0x00008080, 0x00808080, + 0x00000008, 0x00800008, 0x00008008, 0x00808008, 0x00000088, 0x00800088, + 0x00008088, 0x00808088, + }, + { + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, 0x00000000, 0x01000000, 0x00010000, 0x01010000, + 0x00000100, 0x01000100, 0x00010100, 0x01010100, 0x00000000, 0x01000000, + 0x00010000, 0x01010000, 0x00000100, 0x01000100, 0x00010100, 0x01010100, + 0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100, + 0x00010100, 0x01010100, + }, + { + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, 0x00000000, 0x02000000, 0x00020000, 0x02020000, + 0x00000200, 0x02000200, 0x00020200, 0x02020200, 0x00000000, 0x02000000, + 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 0x02020200, + 0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, + 0x00020200, 0x02020200, + }, + { + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, 0x00000000, 0x04000000, 0x00040000, 0x04040000, + 0x00000400, 0x04000400, 0x00040400, 0x04040400, 0x00000000, 0x04000000, + 0x00040000, 0x04040000, 0x00000400, 0x04000400, 0x00040400, 0x04040400, + 0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400, + 0x00040400, 0x04040400, + }, + { + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, 0x00000000, 0x08000000, 0x00080000, 0x08080000, + 0x00000800, 0x08000800, 0x00080800, 0x08080800, 0x00000000, 0x08000000, + 0x00080000, 0x08080000, 0x00000800, 0x08000800, 0x00080800, 0x08080800, + 0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800, + 0x00080800, 0x08080800, + }, +}; + +const uint32_t comp_maskl[8][128] = +{ + { + 0x00000000, 0x00000010, 0x00004000, 0x00004010, 0x00040000, 0x00040010, + 0x00044000, 0x00044010, 0x00000100, 0x00000110, 0x00004100, 0x00004110, + 0x00040100, 0x00040110, 0x00044100, 0x00044110, 0x00020000, 0x00020010, + 0x00024000, 0x00024010, 0x00060000, 0x00060010, 0x00064000, 0x00064010, + 0x00020100, 0x00020110, 0x00024100, 0x00024110, 0x00060100, 0x00060110, + 0x00064100, 0x00064110, 0x00000001, 0x00000011, 0x00004001, 0x00004011, + 0x00040001, 0x00040011, 0x00044001, 0x00044011, 0x00000101, 0x00000111, + 0x00004101, 0x00004111, 0x00040101, 0x00040111, 0x00044101, 0x00044111, + 0x00020001, 0x00020011, 0x00024001, 0x00024011, 0x00060001, 0x00060011, + 0x00064001, 0x00064011, 0x00020101, 0x00020111, 0x00024101, 0x00024111, + 0x00060101, 0x00060111, 0x00064101, 0x00064111, 0x00080000, 0x00080010, + 0x00084000, 0x00084010, 0x000c0000, 0x000c0010, 0x000c4000, 0x000c4010, + 0x00080100, 0x00080110, 0x00084100, 0x00084110, 0x000c0100, 0x000c0110, + 0x000c4100, 0x000c4110, 0x000a0000, 0x000a0010, 0x000a4000, 0x000a4010, + 0x000e0000, 0x000e0010, 0x000e4000, 0x000e4010, 0x000a0100, 0x000a0110, + 0x000a4100, 0x000a4110, 0x000e0100, 0x000e0110, 0x000e4100, 0x000e4110, + 0x00080001, 0x00080011, 0x00084001, 0x00084011, 0x000c0001, 0x000c0011, + 0x000c4001, 0x000c4011, 0x00080101, 0x00080111, 0x00084101, 0x00084111, + 0x000c0101, 0x000c0111, 0x000c4101, 0x000c4111, 0x000a0001, 0x000a0011, + 0x000a4001, 0x000a4011, 0x000e0001, 0x000e0011, 0x000e4001, 0x000e4011, + 0x000a0101, 0x000a0111, 0x000a4101, 0x000a4111, 0x000e0101, 0x000e0111, + 0x000e4101, 0x000e4111, + }, + { + 0x00000000, 0x00800000, 0x00000002, 0x00800002, 0x00000200, 0x00800200, + 0x00000202, 0x00800202, 0x00200000, 0x00a00000, 0x00200002, 0x00a00002, + 0x00200200, 0x00a00200, 0x00200202, 0x00a00202, 0x00001000, 0x00801000, + 0x00001002, 0x00801002, 0x00001200, 0x00801200, 0x00001202, 0x00801202, + 0x00201000, 0x00a01000, 0x00201002, 0x00a01002, 0x00201200, 0x00a01200, + 0x00201202, 0x00a01202, 0x00000000, 0x00800000, 0x00000002, 0x00800002, + 0x00000200, 0x00800200, 0x00000202, 0x00800202, 0x00200000, 0x00a00000, + 0x00200002, 0x00a00002, 0x00200200, 0x00a00200, 0x00200202, 0x00a00202, + 0x00001000, 0x00801000, 0x00001002, 0x00801002, 0x00001200, 0x00801200, + 0x00001202, 0x00801202, 0x00201000, 0x00a01000, 0x00201002, 0x00a01002, + 0x00201200, 0x00a01200, 0x00201202, 0x00a01202, 0x00000040, 0x00800040, + 0x00000042, 0x00800042, 0x00000240, 0x00800240, 0x00000242, 0x00800242, + 0x00200040, 0x00a00040, 0x00200042, 0x00a00042, 0x00200240, 0x00a00240, + 0x00200242, 0x00a00242, 0x00001040, 0x00801040, 0x00001042, 0x00801042, + 0x00001240, 0x00801240, 0x00001242, 0x00801242, 0x00201040, 0x00a01040, + 0x00201042, 0x00a01042, 0x00201240, 0x00a01240, 0x00201242, 0x00a01242, + 0x00000040, 0x00800040, 0x00000042, 0x00800042, 0x00000240, 0x00800240, + 0x00000242, 0x00800242, 0x00200040, 0x00a00040, 0x00200042, 0x00a00042, + 0x00200240, 0x00a00240, 0x00200242, 0x00a00242, 0x00001040, 0x00801040, + 0x00001042, 0x00801042, 0x00001240, 0x00801240, 0x00001242, 0x00801242, + 0x00201040, 0x00a01040, 0x00201042, 0x00a01042, 0x00201240, 0x00a01240, + 0x00201242, 0x00a01242, + }, + { + 0x00000000, 0x00002000, 0x00000004, 0x00002004, 0x00000400, 0x00002400, + 0x00000404, 0x00002404, 0x00000000, 0x00002000, 0x00000004, 0x00002004, + 0x00000400, 0x00002400, 0x00000404, 0x00002404, 0x00400000, 0x00402000, + 0x00400004, 0x00402004, 0x00400400, 0x00402400, 0x00400404, 0x00402404, + 0x00400000, 0x00402000, 0x00400004, 0x00402004, 0x00400400, 0x00402400, + 0x00400404, 0x00402404, 0x00000020, 0x00002020, 0x00000024, 0x00002024, + 0x00000420, 0x00002420, 0x00000424, 0x00002424, 0x00000020, 0x00002020, + 0x00000024, 0x00002024, 0x00000420, 0x00002420, 0x00000424, 0x00002424, + 0x00400020, 0x00402020, 0x00400024, 0x00402024, 0x00400420, 0x00402420, + 0x00400424, 0x00402424, 0x00400020, 0x00402020, 0x00400024, 0x00402024, + 0x00400420, 0x00402420, 0x00400424, 0x00402424, 0x00008000, 0x0000a000, + 0x00008004, 0x0000a004, 0x00008400, 0x0000a400, 0x00008404, 0x0000a404, + 0x00008000, 0x0000a000, 0x00008004, 0x0000a004, 0x00008400, 0x0000a400, + 0x00008404, 0x0000a404, 0x00408000, 0x0040a000, 0x00408004, 0x0040a004, + 0x00408400, 0x0040a400, 0x00408404, 0x0040a404, 0x00408000, 0x0040a000, + 0x00408004, 0x0040a004, 0x00408400, 0x0040a400, 0x00408404, 0x0040a404, + 0x00008020, 0x0000a020, 0x00008024, 0x0000a024, 0x00008420, 0x0000a420, + 0x00008424, 0x0000a424, 0x00008020, 0x0000a020, 0x00008024, 0x0000a024, + 0x00008420, 0x0000a420, 0x00008424, 0x0000a424, 0x00408020, 0x0040a020, + 0x00408024, 0x0040a024, 0x00408420, 0x0040a420, 0x00408424, 0x0040a424, + 0x00408020, 0x0040a020, 0x00408024, 0x0040a024, 0x00408420, 0x0040a420, + 0x00408424, 0x0040a424, + }, + { + 0x00000000, 0x00010000, 0x00000008, 0x00010008, 0x00000080, 0x00010080, + 0x00000088, 0x00010088, 0x00000000, 0x00010000, 0x00000008, 0x00010008, + 0x00000080, 0x00010080, 0x00000088, 0x00010088, 0x00100000, 0x00110000, + 0x00100008, 0x00110008, 0x00100080, 0x00110080, 0x00100088, 0x00110088, + 0x00100000, 0x00110000, 0x00100008, 0x00110008, 0x00100080, 0x00110080, + 0x00100088, 0x00110088, 0x00000800, 0x00010800, 0x00000808, 0x00010808, + 0x00000880, 0x00010880, 0x00000888, 0x00010888, 0x00000800, 0x00010800, + 0x00000808, 0x00010808, 0x00000880, 0x00010880, 0x00000888, 0x00010888, + 0x00100800, 0x00110800, 0x00100808, 0x00110808, 0x00100880, 0x00110880, + 0x00100888, 0x00110888, 0x00100800, 0x00110800, 0x00100808, 0x00110808, + 0x00100880, 0x00110880, 0x00100888, 0x00110888, 0x00000000, 0x00010000, + 0x00000008, 0x00010008, 0x00000080, 0x00010080, 0x00000088, 0x00010088, + 0x00000000, 0x00010000, 0x00000008, 0x00010008, 0x00000080, 0x00010080, + 0x00000088, 0x00010088, 0x00100000, 0x00110000, 0x00100008, 0x00110008, + 0x00100080, 0x00110080, 0x00100088, 0x00110088, 0x00100000, 0x00110000, + 0x00100008, 0x00110008, 0x00100080, 0x00110080, 0x00100088, 0x00110088, + 0x00000800, 0x00010800, 0x00000808, 0x00010808, 0x00000880, 0x00010880, + 0x00000888, 0x00010888, 0x00000800, 0x00010800, 0x00000808, 0x00010808, + 0x00000880, 0x00010880, 0x00000888, 0x00010888, 0x00100800, 0x00110800, + 0x00100808, 0x00110808, 0x00100880, 0x00110880, 0x00100888, 0x00110888, + 0x00100800, 0x00110800, 0x00100808, 0x00110808, 0x00100880, 0x00110880, + 0x00100888, 0x00110888, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, +}; + +const uint32_t comp_maskr[8][128] = +{ + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, + }, + { + 0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00002000, 0x00002000, + 0x00002080, 0x00002080, 0x00000001, 0x00000001, 0x00000081, 0x00000081, + 0x00002001, 0x00002001, 0x00002081, 0x00002081, 0x00200000, 0x00200000, + 0x00200080, 0x00200080, 0x00202000, 0x00202000, 0x00202080, 0x00202080, + 0x00200001, 0x00200001, 0x00200081, 0x00200081, 0x00202001, 0x00202001, + 0x00202081, 0x00202081, 0x00020000, 0x00020000, 0x00020080, 0x00020080, + 0x00022000, 0x00022000, 0x00022080, 0x00022080, 0x00020001, 0x00020001, + 0x00020081, 0x00020081, 0x00022001, 0x00022001, 0x00022081, 0x00022081, + 0x00220000, 0x00220000, 0x00220080, 0x00220080, 0x00222000, 0x00222000, + 0x00222080, 0x00222080, 0x00220001, 0x00220001, 0x00220081, 0x00220081, + 0x00222001, 0x00222001, 0x00222081, 0x00222081, 0x00000002, 0x00000002, + 0x00000082, 0x00000082, 0x00002002, 0x00002002, 0x00002082, 0x00002082, + 0x00000003, 0x00000003, 0x00000083, 0x00000083, 0x00002003, 0x00002003, + 0x00002083, 0x00002083, 0x00200002, 0x00200002, 0x00200082, 0x00200082, + 0x00202002, 0x00202002, 0x00202082, 0x00202082, 0x00200003, 0x00200003, + 0x00200083, 0x00200083, 0x00202003, 0x00202003, 0x00202083, 0x00202083, + 0x00020002, 0x00020002, 0x00020082, 0x00020082, 0x00022002, 0x00022002, + 0x00022082, 0x00022082, 0x00020003, 0x00020003, 0x00020083, 0x00020083, + 0x00022003, 0x00022003, 0x00022083, 0x00022083, 0x00220002, 0x00220002, + 0x00220082, 0x00220082, 0x00222002, 0x00222002, 0x00222082, 0x00222082, + 0x00220003, 0x00220003, 0x00220083, 0x00220083, 0x00222003, 0x00222003, + 0x00222083, 0x00222083, + }, + { + 0x00000000, 0x00000010, 0x00800000, 0x00800010, 0x00010000, 0x00010010, + 0x00810000, 0x00810010, 0x00000200, 0x00000210, 0x00800200, 0x00800210, + 0x00010200, 0x00010210, 0x00810200, 0x00810210, 0x00000000, 0x00000010, + 0x00800000, 0x00800010, 0x00010000, 0x00010010, 0x00810000, 0x00810010, + 0x00000200, 0x00000210, 0x00800200, 0x00800210, 0x00010200, 0x00010210, + 0x00810200, 0x00810210, 0x00100000, 0x00100010, 0x00900000, 0x00900010, + 0x00110000, 0x00110010, 0x00910000, 0x00910010, 0x00100200, 0x00100210, + 0x00900200, 0x00900210, 0x00110200, 0x00110210, 0x00910200, 0x00910210, + 0x00100000, 0x00100010, 0x00900000, 0x00900010, 0x00110000, 0x00110010, + 0x00910000, 0x00910010, 0x00100200, 0x00100210, 0x00900200, 0x00900210, + 0x00110200, 0x00110210, 0x00910200, 0x00910210, 0x00000004, 0x00000014, + 0x00800004, 0x00800014, 0x00010004, 0x00010014, 0x00810004, 0x00810014, + 0x00000204, 0x00000214, 0x00800204, 0x00800214, 0x00010204, 0x00010214, + 0x00810204, 0x00810214, 0x00000004, 0x00000014, 0x00800004, 0x00800014, + 0x00010004, 0x00010014, 0x00810004, 0x00810014, 0x00000204, 0x00000214, + 0x00800204, 0x00800214, 0x00010204, 0x00010214, 0x00810204, 0x00810214, + 0x00100004, 0x00100014, 0x00900004, 0x00900014, 0x00110004, 0x00110014, + 0x00910004, 0x00910014, 0x00100204, 0x00100214, 0x00900204, 0x00900214, + 0x00110204, 0x00110214, 0x00910204, 0x00910214, 0x00100004, 0x00100014, + 0x00900004, 0x00900014, 0x00110004, 0x00110014, 0x00910004, 0x00910014, + 0x00100204, 0x00100214, 0x00900204, 0x00900214, 0x00110204, 0x00110214, + 0x00910204, 0x00910214, + }, + { + 0x00000000, 0x00000400, 0x00001000, 0x00001400, 0x00080000, 0x00080400, + 0x00081000, 0x00081400, 0x00000020, 0x00000420, 0x00001020, 0x00001420, + 0x00080020, 0x00080420, 0x00081020, 0x00081420, 0x00004000, 0x00004400, + 0x00005000, 0x00005400, 0x00084000, 0x00084400, 0x00085000, 0x00085400, + 0x00004020, 0x00004420, 0x00005020, 0x00005420, 0x00084020, 0x00084420, + 0x00085020, 0x00085420, 0x00000800, 0x00000c00, 0x00001800, 0x00001c00, + 0x00080800, 0x00080c00, 0x00081800, 0x00081c00, 0x00000820, 0x00000c20, + 0x00001820, 0x00001c20, 0x00080820, 0x00080c20, 0x00081820, 0x00081c20, + 0x00004800, 0x00004c00, 0x00005800, 0x00005c00, 0x00084800, 0x00084c00, + 0x00085800, 0x00085c00, 0x00004820, 0x00004c20, 0x00005820, 0x00005c20, + 0x00084820, 0x00084c20, 0x00085820, 0x00085c20, 0x00000000, 0x00000400, + 0x00001000, 0x00001400, 0x00080000, 0x00080400, 0x00081000, 0x00081400, + 0x00000020, 0x00000420, 0x00001020, 0x00001420, 0x00080020, 0x00080420, + 0x00081020, 0x00081420, 0x00004000, 0x00004400, 0x00005000, 0x00005400, + 0x00084000, 0x00084400, 0x00085000, 0x00085400, 0x00004020, 0x00004420, + 0x00005020, 0x00005420, 0x00084020, 0x00084420, 0x00085020, 0x00085420, + 0x00000800, 0x00000c00, 0x00001800, 0x00001c00, 0x00080800, 0x00080c00, + 0x00081800, 0x00081c00, 0x00000820, 0x00000c20, 0x00001820, 0x00001c20, + 0x00080820, 0x00080c20, 0x00081820, 0x00081c20, 0x00004800, 0x00004c00, + 0x00005800, 0x00005c00, 0x00084800, 0x00084c00, 0x00085800, 0x00085c00, + 0x00004820, 0x00004c20, 0x00005820, 0x00005c20, 0x00084820, 0x00084c20, + 0x00085820, 0x00085c20, + }, + { + 0x00000000, 0x00000100, 0x00040000, 0x00040100, 0x00000000, 0x00000100, + 0x00040000, 0x00040100, 0x00000040, 0x00000140, 0x00040040, 0x00040140, + 0x00000040, 0x00000140, 0x00040040, 0x00040140, 0x00400000, 0x00400100, + 0x00440000, 0x00440100, 0x00400000, 0x00400100, 0x00440000, 0x00440100, + 0x00400040, 0x00400140, 0x00440040, 0x00440140, 0x00400040, 0x00400140, + 0x00440040, 0x00440140, 0x00008000, 0x00008100, 0x00048000, 0x00048100, + 0x00008000, 0x00008100, 0x00048000, 0x00048100, 0x00008040, 0x00008140, + 0x00048040, 0x00048140, 0x00008040, 0x00008140, 0x00048040, 0x00048140, + 0x00408000, 0x00408100, 0x00448000, 0x00448100, 0x00408000, 0x00408100, + 0x00448000, 0x00448100, 0x00408040, 0x00408140, 0x00448040, 0x00448140, + 0x00408040, 0x00408140, 0x00448040, 0x00448140, 0x00000008, 0x00000108, + 0x00040008, 0x00040108, 0x00000008, 0x00000108, 0x00040008, 0x00040108, + 0x00000048, 0x00000148, 0x00040048, 0x00040148, 0x00000048, 0x00000148, + 0x00040048, 0x00040148, 0x00400008, 0x00400108, 0x00440008, 0x00440108, + 0x00400008, 0x00400108, 0x00440008, 0x00440108, 0x00400048, 0x00400148, + 0x00440048, 0x00440148, 0x00400048, 0x00400148, 0x00440048, 0x00440148, + 0x00008008, 0x00008108, 0x00048008, 0x00048108, 0x00008008, 0x00008108, + 0x00048008, 0x00048108, 0x00008048, 0x00008148, 0x00048048, 0x00048148, + 0x00008048, 0x00008148, 0x00048048, 0x00048148, 0x00408008, 0x00408108, + 0x00448008, 0x00448108, 0x00408008, 0x00408108, 0x00448008, 0x00448108, + 0x00408048, 0x00408148, 0x00448048, 0x00448148, 0x00408048, 0x00408148, + 0x00448048, 0x00448148, + }, +}; + +const uint32_t psbox[4][256] = +{ + { + 0x00000000, 0x00004000, 0x40000000, 0x40004000, 0x00000010, 0x00004010, + 0x40000010, 0x40004010, 0x00080000, 0x00084000, 0x40080000, 0x40084000, + 0x00080010, 0x00084010, 0x40080010, 0x40084010, 0x00000002, 0x00004002, + 0x40000002, 0x40004002, 0x00000012, 0x00004012, 0x40000012, 0x40004012, + 0x00080002, 0x00084002, 0x40080002, 0x40084002, 0x00080012, 0x00084012, + 0x40080012, 0x40084012, 0x00000200, 0x00004200, 0x40000200, 0x40004200, + 0x00000210, 0x00004210, 0x40000210, 0x40004210, 0x00080200, 0x00084200, + 0x40080200, 0x40084200, 0x00080210, 0x00084210, 0x40080210, 0x40084210, + 0x00000202, 0x00004202, 0x40000202, 0x40004202, 0x00000212, 0x00004212, + 0x40000212, 0x40004212, 0x00080202, 0x00084202, 0x40080202, 0x40084202, + 0x00080212, 0x00084212, 0x40080212, 0x40084212, 0x00008000, 0x0000c000, + 0x40008000, 0x4000c000, 0x00008010, 0x0000c010, 0x40008010, 0x4000c010, + 0x00088000, 0x0008c000, 0x40088000, 0x4008c000, 0x00088010, 0x0008c010, + 0x40088010, 0x4008c010, 0x00008002, 0x0000c002, 0x40008002, 0x4000c002, + 0x00008012, 0x0000c012, 0x40008012, 0x4000c012, 0x00088002, 0x0008c002, + 0x40088002, 0x4008c002, 0x00088012, 0x0008c012, 0x40088012, 0x4008c012, + 0x00008200, 0x0000c200, 0x40008200, 0x4000c200, 0x00008210, 0x0000c210, + 0x40008210, 0x4000c210, 0x00088200, 0x0008c200, 0x40088200, 0x4008c200, + 0x00088210, 0x0008c210, 0x40088210, 0x4008c210, 0x00008202, 0x0000c202, + 0x40008202, 0x4000c202, 0x00008212, 0x0000c212, 0x40008212, 0x4000c212, + 0x00088202, 0x0008c202, 0x40088202, 0x4008c202, 0x00088212, 0x0008c212, + 0x40088212, 0x4008c212, 0x00800000, 0x00804000, 0x40800000, 0x40804000, + 0x00800010, 0x00804010, 0x40800010, 0x40804010, 0x00880000, 0x00884000, + 0x40880000, 0x40884000, 0x00880010, 0x00884010, 0x40880010, 0x40884010, + 0x00800002, 0x00804002, 0x40800002, 0x40804002, 0x00800012, 0x00804012, + 0x40800012, 0x40804012, 0x00880002, 0x00884002, 0x40880002, 0x40884002, + 0x00880012, 0x00884012, 0x40880012, 0x40884012, 0x00800200, 0x00804200, + 0x40800200, 0x40804200, 0x00800210, 0x00804210, 0x40800210, 0x40804210, + 0x00880200, 0x00884200, 0x40880200, 0x40884200, 0x00880210, 0x00884210, + 0x40880210, 0x40884210, 0x00800202, 0x00804202, 0x40800202, 0x40804202, + 0x00800212, 0x00804212, 0x40800212, 0x40804212, 0x00880202, 0x00884202, + 0x40880202, 0x40884202, 0x00880212, 0x00884212, 0x40880212, 0x40884212, + 0x00808000, 0x0080c000, 0x40808000, 0x4080c000, 0x00808010, 0x0080c010, + 0x40808010, 0x4080c010, 0x00888000, 0x0088c000, 0x40888000, 0x4088c000, + 0x00888010, 0x0088c010, 0x40888010, 0x4088c010, 0x00808002, 0x0080c002, + 0x40808002, 0x4080c002, 0x00808012, 0x0080c012, 0x40808012, 0x4080c012, + 0x00888002, 0x0088c002, 0x40888002, 0x4088c002, 0x00888012, 0x0088c012, + 0x40888012, 0x4088c012, 0x00808200, 0x0080c200, 0x40808200, 0x4080c200, + 0x00808210, 0x0080c210, 0x40808210, 0x4080c210, 0x00888200, 0x0088c200, + 0x40888200, 0x4088c200, 0x00888210, 0x0088c210, 0x40888210, 0x4088c210, + 0x00808202, 0x0080c202, 0x40808202, 0x4080c202, 0x00808212, 0x0080c212, + 0x40808212, 0x4080c212, 0x00888202, 0x0088c202, 0x40888202, 0x4088c202, + 0x00888212, 0x0088c212, 0x40888212, 0x4088c212, + }, + { + 0x00000000, 0x80000000, 0x00400000, 0x80400000, 0x00001000, 0x80001000, + 0x00401000, 0x80401000, 0x00000040, 0x80000040, 0x00400040, 0x80400040, + 0x00001040, 0x80001040, 0x00401040, 0x80401040, 0x04000000, 0x84000000, + 0x04400000, 0x84400000, 0x04001000, 0x84001000, 0x04401000, 0x84401000, + 0x04000040, 0x84000040, 0x04400040, 0x84400040, 0x04001040, 0x84001040, + 0x04401040, 0x84401040, 0x00000004, 0x80000004, 0x00400004, 0x80400004, + 0x00001004, 0x80001004, 0x00401004, 0x80401004, 0x00000044, 0x80000044, + 0x00400044, 0x80400044, 0x00001044, 0x80001044, 0x00401044, 0x80401044, + 0x04000004, 0x84000004, 0x04400004, 0x84400004, 0x04001004, 0x84001004, + 0x04401004, 0x84401004, 0x04000044, 0x84000044, 0x04400044, 0x84400044, + 0x04001044, 0x84001044, 0x04401044, 0x84401044, 0x00010000, 0x80010000, + 0x00410000, 0x80410000, 0x00011000, 0x80011000, 0x00411000, 0x80411000, + 0x00010040, 0x80010040, 0x00410040, 0x80410040, 0x00011040, 0x80011040, + 0x00411040, 0x80411040, 0x04010000, 0x84010000, 0x04410000, 0x84410000, + 0x04011000, 0x84011000, 0x04411000, 0x84411000, 0x04010040, 0x84010040, + 0x04410040, 0x84410040, 0x04011040, 0x84011040, 0x04411040, 0x84411040, + 0x00010004, 0x80010004, 0x00410004, 0x80410004, 0x00011004, 0x80011004, + 0x00411004, 0x80411004, 0x00010044, 0x80010044, 0x00410044, 0x80410044, + 0x00011044, 0x80011044, 0x00411044, 0x80411044, 0x04010004, 0x84010004, + 0x04410004, 0x84410004, 0x04011004, 0x84011004, 0x04411004, 0x84411004, + 0x04010044, 0x84010044, 0x04410044, 0x84410044, 0x04011044, 0x84011044, + 0x04411044, 0x84411044, 0x00000100, 0x80000100, 0x00400100, 0x80400100, + 0x00001100, 0x80001100, 0x00401100, 0x80401100, 0x00000140, 0x80000140, + 0x00400140, 0x80400140, 0x00001140, 0x80001140, 0x00401140, 0x80401140, + 0x04000100, 0x84000100, 0x04400100, 0x84400100, 0x04001100, 0x84001100, + 0x04401100, 0x84401100, 0x04000140, 0x84000140, 0x04400140, 0x84400140, + 0x04001140, 0x84001140, 0x04401140, 0x84401140, 0x00000104, 0x80000104, + 0x00400104, 0x80400104, 0x00001104, 0x80001104, 0x00401104, 0x80401104, + 0x00000144, 0x80000144, 0x00400144, 0x80400144, 0x00001144, 0x80001144, + 0x00401144, 0x80401144, 0x04000104, 0x84000104, 0x04400104, 0x84400104, + 0x04001104, 0x84001104, 0x04401104, 0x84401104, 0x04000144, 0x84000144, + 0x04400144, 0x84400144, 0x04001144, 0x84001144, 0x04401144, 0x84401144, + 0x00010100, 0x80010100, 0x00410100, 0x80410100, 0x00011100, 0x80011100, + 0x00411100, 0x80411100, 0x00010140, 0x80010140, 0x00410140, 0x80410140, + 0x00011140, 0x80011140, 0x00411140, 0x80411140, 0x04010100, 0x84010100, + 0x04410100, 0x84410100, 0x04011100, 0x84011100, 0x04411100, 0x84411100, + 0x04010140, 0x84010140, 0x04410140, 0x84410140, 0x04011140, 0x84011140, + 0x04411140, 0x84411140, 0x00010104, 0x80010104, 0x00410104, 0x80410104, + 0x00011104, 0x80011104, 0x00411104, 0x80411104, 0x00010144, 0x80010144, + 0x00410144, 0x80410144, 0x00011144, 0x80011144, 0x00411144, 0x80411144, + 0x04010104, 0x84010104, 0x04410104, 0x84410104, 0x04011104, 0x84011104, + 0x04411104, 0x84411104, 0x04010144, 0x84010144, 0x04410144, 0x84410144, + 0x04011144, 0x84011144, 0x04411144, 0x84411144, + }, + { + 0x00000000, 0x00002000, 0x00200000, 0x00202000, 0x00000008, 0x00002008, + 0x00200008, 0x00202008, 0x10000000, 0x10002000, 0x10200000, 0x10202000, + 0x10000008, 0x10002008, 0x10200008, 0x10202008, 0x20000000, 0x20002000, + 0x20200000, 0x20202000, 0x20000008, 0x20002008, 0x20200008, 0x20202008, + 0x30000000, 0x30002000, 0x30200000, 0x30202000, 0x30000008, 0x30002008, + 0x30200008, 0x30202008, 0x00000080, 0x00002080, 0x00200080, 0x00202080, + 0x00000088, 0x00002088, 0x00200088, 0x00202088, 0x10000080, 0x10002080, + 0x10200080, 0x10202080, 0x10000088, 0x10002088, 0x10200088, 0x10202088, + 0x20000080, 0x20002080, 0x20200080, 0x20202080, 0x20000088, 0x20002088, + 0x20200088, 0x20202088, 0x30000080, 0x30002080, 0x30200080, 0x30202080, + 0x30000088, 0x30002088, 0x30200088, 0x30202088, 0x00040000, 0x00042000, + 0x00240000, 0x00242000, 0x00040008, 0x00042008, 0x00240008, 0x00242008, + 0x10040000, 0x10042000, 0x10240000, 0x10242000, 0x10040008, 0x10042008, + 0x10240008, 0x10242008, 0x20040000, 0x20042000, 0x20240000, 0x20242000, + 0x20040008, 0x20042008, 0x20240008, 0x20242008, 0x30040000, 0x30042000, + 0x30240000, 0x30242000, 0x30040008, 0x30042008, 0x30240008, 0x30242008, + 0x00040080, 0x00042080, 0x00240080, 0x00242080, 0x00040088, 0x00042088, + 0x00240088, 0x00242088, 0x10040080, 0x10042080, 0x10240080, 0x10242080, + 0x10040088, 0x10042088, 0x10240088, 0x10242088, 0x20040080, 0x20042080, + 0x20240080, 0x20242080, 0x20040088, 0x20042088, 0x20240088, 0x20242088, + 0x30040080, 0x30042080, 0x30240080, 0x30242080, 0x30040088, 0x30042088, + 0x30240088, 0x30242088, 0x01000000, 0x01002000, 0x01200000, 0x01202000, + 0x01000008, 0x01002008, 0x01200008, 0x01202008, 0x11000000, 0x11002000, + 0x11200000, 0x11202000, 0x11000008, 0x11002008, 0x11200008, 0x11202008, + 0x21000000, 0x21002000, 0x21200000, 0x21202000, 0x21000008, 0x21002008, + 0x21200008, 0x21202008, 0x31000000, 0x31002000, 0x31200000, 0x31202000, + 0x31000008, 0x31002008, 0x31200008, 0x31202008, 0x01000080, 0x01002080, + 0x01200080, 0x01202080, 0x01000088, 0x01002088, 0x01200088, 0x01202088, + 0x11000080, 0x11002080, 0x11200080, 0x11202080, 0x11000088, 0x11002088, + 0x11200088, 0x11202088, 0x21000080, 0x21002080, 0x21200080, 0x21202080, + 0x21000088, 0x21002088, 0x21200088, 0x21202088, 0x31000080, 0x31002080, + 0x31200080, 0x31202080, 0x31000088, 0x31002088, 0x31200088, 0x31202088, + 0x01040000, 0x01042000, 0x01240000, 0x01242000, 0x01040008, 0x01042008, + 0x01240008, 0x01242008, 0x11040000, 0x11042000, 0x11240000, 0x11242000, + 0x11040008, 0x11042008, 0x11240008, 0x11242008, 0x21040000, 0x21042000, + 0x21240000, 0x21242000, 0x21040008, 0x21042008, 0x21240008, 0x21242008, + 0x31040000, 0x31042000, 0x31240000, 0x31242000, 0x31040008, 0x31042008, + 0x31240008, 0x31242008, 0x01040080, 0x01042080, 0x01240080, 0x01242080, + 0x01040088, 0x01042088, 0x01240088, 0x01242088, 0x11040080, 0x11042080, + 0x11240080, 0x11242080, 0x11040088, 0x11042088, 0x11240088, 0x11242088, + 0x21040080, 0x21042080, 0x21240080, 0x21242080, 0x21040088, 0x21042088, + 0x21240088, 0x21242088, 0x31040080, 0x31042080, 0x31240080, 0x31242080, + 0x31040088, 0x31042088, 0x31240088, 0x31242088, + }, + { + 0x00000000, 0x00000800, 0x00020000, 0x00020800, 0x00000020, 0x00000820, + 0x00020020, 0x00020820, 0x08000000, 0x08000800, 0x08020000, 0x08020800, + 0x08000020, 0x08000820, 0x08020020, 0x08020820, 0x02000000, 0x02000800, + 0x02020000, 0x02020800, 0x02000020, 0x02000820, 0x02020020, 0x02020820, + 0x0a000000, 0x0a000800, 0x0a020000, 0x0a020800, 0x0a000020, 0x0a000820, + 0x0a020020, 0x0a020820, 0x00000400, 0x00000c00, 0x00020400, 0x00020c00, + 0x00000420, 0x00000c20, 0x00020420, 0x00020c20, 0x08000400, 0x08000c00, + 0x08020400, 0x08020c00, 0x08000420, 0x08000c20, 0x08020420, 0x08020c20, + 0x02000400, 0x02000c00, 0x02020400, 0x02020c00, 0x02000420, 0x02000c20, + 0x02020420, 0x02020c20, 0x0a000400, 0x0a000c00, 0x0a020400, 0x0a020c00, + 0x0a000420, 0x0a000c20, 0x0a020420, 0x0a020c20, 0x00100000, 0x00100800, + 0x00120000, 0x00120800, 0x00100020, 0x00100820, 0x00120020, 0x00120820, + 0x08100000, 0x08100800, 0x08120000, 0x08120800, 0x08100020, 0x08100820, + 0x08120020, 0x08120820, 0x02100000, 0x02100800, 0x02120000, 0x02120800, + 0x02100020, 0x02100820, 0x02120020, 0x02120820, 0x0a100000, 0x0a100800, + 0x0a120000, 0x0a120800, 0x0a100020, 0x0a100820, 0x0a120020, 0x0a120820, + 0x00100400, 0x00100c00, 0x00120400, 0x00120c00, 0x00100420, 0x00100c20, + 0x00120420, 0x00120c20, 0x08100400, 0x08100c00, 0x08120400, 0x08120c00, + 0x08100420, 0x08100c20, 0x08120420, 0x08120c20, 0x02100400, 0x02100c00, + 0x02120400, 0x02120c00, 0x02100420, 0x02100c20, 0x02120420, 0x02120c20, + 0x0a100400, 0x0a100c00, 0x0a120400, 0x0a120c00, 0x0a100420, 0x0a100c20, + 0x0a120420, 0x0a120c20, 0x00000001, 0x00000801, 0x00020001, 0x00020801, + 0x00000021, 0x00000821, 0x00020021, 0x00020821, 0x08000001, 0x08000801, + 0x08020001, 0x08020801, 0x08000021, 0x08000821, 0x08020021, 0x08020821, + 0x02000001, 0x02000801, 0x02020001, 0x02020801, 0x02000021, 0x02000821, + 0x02020021, 0x02020821, 0x0a000001, 0x0a000801, 0x0a020001, 0x0a020801, + 0x0a000021, 0x0a000821, 0x0a020021, 0x0a020821, 0x00000401, 0x00000c01, + 0x00020401, 0x00020c01, 0x00000421, 0x00000c21, 0x00020421, 0x00020c21, + 0x08000401, 0x08000c01, 0x08020401, 0x08020c01, 0x08000421, 0x08000c21, + 0x08020421, 0x08020c21, 0x02000401, 0x02000c01, 0x02020401, 0x02020c01, + 0x02000421, 0x02000c21, 0x02020421, 0x02020c21, 0x0a000401, 0x0a000c01, + 0x0a020401, 0x0a020c01, 0x0a000421, 0x0a000c21, 0x0a020421, 0x0a020c21, + 0x00100001, 0x00100801, 0x00120001, 0x00120801, 0x00100021, 0x00100821, + 0x00120021, 0x00120821, 0x08100001, 0x08100801, 0x08120001, 0x08120801, + 0x08100021, 0x08100821, 0x08120021, 0x08120821, 0x02100001, 0x02100801, + 0x02120001, 0x02120801, 0x02100021, 0x02100821, 0x02120021, 0x02120821, + 0x0a100001, 0x0a100801, 0x0a120001, 0x0a120801, 0x0a100021, 0x0a100821, + 0x0a120021, 0x0a120821, 0x00100401, 0x00100c01, 0x00120401, 0x00120c01, + 0x00100421, 0x00100c21, 0x00120421, 0x00120c21, 0x08100401, 0x08100c01, + 0x08120401, 0x08120c01, 0x08100421, 0x08100c21, 0x08120421, 0x08120c21, + 0x02100401, 0x02100c01, 0x02120401, 0x02120c01, 0x02100421, 0x02100c21, + 0x02120421, 0x02120c21, 0x0a100401, 0x0a100c01, 0x0a120401, 0x0a120c01, + 0x0a100421, 0x0a100c21, 0x0a120421, 0x0a120c21, + }, +}; diff --git a/des.c b/des.c new file mode 100644 index 0000000..12ff9ef --- /dev/null +++ b/des.c @@ -0,0 +1,280 @@ +/* + * FreeSec: libcrypt for NetBSD + * + * Copyright (c) 1994 David Burren + * All rights reserved. + * + * Adapted for FreeBSD-2.0 by Geoffrey M. Rehmet + * this file should now *only* export crypt(), in order to make + * binaries of libcrypt exportable from the USA + * + * Adapted for FreeBSD-4.0 by Mark R V Murray + * this file should now *only* export crypt_des(), in order to make + * a module that can be optionally included in libcrypt. + * + * Adapted for libxcrypt by Zack Weinberg, 2017 + * writable global data eliminated; type-punning eliminated; + * des_init() run at build time (see des-mktables.c); + * made into a libxcrypt algorithm module (see des-crypt.c); + * functionality required to support the legacy encrypt() and + * setkey() primitives re-exposed (see des-obsolete.c). + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the author nor the names of other contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This is an original implementation of the DES and the crypt(3) interfaces + * by David Burren . + * + * An excellent reference on the underlying algorithm (and related + * algorithms) is: + * + * B. Schneier, Applied Cryptography: protocols, algorithms, + * and source code in C, John Wiley & Sons, 1994. + * + * Note that in that book's description of DES the lookups for the initial, + * pbox, and final permutations are inverted (this has been brought to the + * attention of the author). A list of errata for this book has been + * posted to the sci.crypt newsgroup by the author and is available for FTP. + */ + +#include "des.h" + +static inline uint32_t +be32_to_cpu (const unsigned char *buf) +{ + return ((((uint32_t)buf[0]) << 24) | + (((uint32_t)buf[1]) << 16) | + (((uint32_t)buf[2]) << 8) | + (((uint32_t)buf[3]) << 0) ); +} + +static inline void +cpu_to_be32 (unsigned char *buf, uint32_t n) +{ + buf[0] = (unsigned char)((n & 0xFF000000u) >> 24); + buf[1] = (unsigned char)((n & 0x00FF0000u) >> 16); + buf[2] = (unsigned char)((n & 0x0000FF00u) >> 8); + buf[3] = (unsigned char)((n & 0x000000FFu) >> 0); +} + +static const uint8_t key_shifts[16] = +{ + 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 +}; + +void +des_set_key (struct des_ctx *restrict ctx, + const unsigned char key[8]) +{ + uint32_t rawkey0, rawkey1, k0, k1, t0, t1; + int shifts, round; + + rawkey0 = be32_to_cpu (&key[0]); + rawkey1 = be32_to_cpu (&key[4]); + + /* Do key permutation and split into two 28-bit subkeys. */ + k0 = key_perm_maskl[0][(rawkey0 >> 25) & 0x7f] + | key_perm_maskl[1][(rawkey0 >> 17) & 0x7f] + | key_perm_maskl[2][(rawkey0 >> 9) & 0x7f] + | key_perm_maskl[3][(rawkey0 >> 1) & 0x7f] + | key_perm_maskl[4][(rawkey1 >> 25) & 0x7f] + | key_perm_maskl[5][(rawkey1 >> 17) & 0x7f] + | key_perm_maskl[6][(rawkey1 >> 9) & 0x7f] + | key_perm_maskl[7][(rawkey1 >> 1) & 0x7f]; + k1 = key_perm_maskr[0][(rawkey0 >> 25) & 0x7f] + | key_perm_maskr[1][(rawkey0 >> 17) & 0x7f] + | key_perm_maskr[2][(rawkey0 >> 9) & 0x7f] + | key_perm_maskr[3][(rawkey0 >> 1) & 0x7f] + | key_perm_maskr[4][(rawkey1 >> 25) & 0x7f] + | key_perm_maskr[5][(rawkey1 >> 17) & 0x7f] + | key_perm_maskr[6][(rawkey1 >> 9) & 0x7f] + | key_perm_maskr[7][(rawkey1 >> 1) & 0x7f]; + + /* Rotate subkeys and do compression permutation. */ + shifts = 0; + for (round = 0; round < 16; round++) + { + shifts += key_shifts[round]; + + t0 = (k0 << shifts) | (k0 >> (28 - shifts)); + t1 = (k1 << shifts) | (k1 >> (28 - shifts)); + + ctx->keysl[round] = + comp_maskl[0][(t0 >> 21) & 0x7f] + | comp_maskl[1][(t0 >> 14) & 0x7f] + | comp_maskl[2][(t0 >> 7) & 0x7f] + | comp_maskl[3][(t0 >> 0) & 0x7f] + | comp_maskl[4][(t1 >> 21) & 0x7f] + | comp_maskl[5][(t1 >> 14) & 0x7f] + | comp_maskl[6][(t1 >> 7) & 0x7f] + | comp_maskl[7][(t1 >> 0) & 0x7f]; + + ctx->keysr[round] = + comp_maskr[0][(t0 >> 21) & 0x7f] + | comp_maskr[1][(t0 >> 14) & 0x7f] + | comp_maskr[2][(t0 >> 7) & 0x7f] + | comp_maskr[3][(t0 >> 0) & 0x7f] + | comp_maskr[4][(t1 >> 21) & 0x7f] + | comp_maskr[5][(t1 >> 14) & 0x7f] + | comp_maskr[6][(t1 >> 7) & 0x7f] + | comp_maskr[7][(t1 >> 0) & 0x7f]; + } +} + +void +des_set_salt (struct des_ctx *restrict ctx, uint32_t salt) +{ + uint32_t obit, saltbit, saltbits; + int i; + saltbits = 0L; + saltbit = 1; + obit = 0x800000; + for (i = 0; i < 24; i++) + { + if (salt & saltbit) + saltbits |= obit; + saltbit <<= 1; + obit >>= 1; + } + ctx->saltbits = saltbits; +} + +void +des_crypt_block (struct des_ctx *restrict ctx, + unsigned char *out, const unsigned char *in, + unsigned int count, bool decrypt) +{ + uint32_t l_in, r_in, l_out, r_out; + uint32_t l, r, *kl, *kr, *kl1, *kr1; + uint32_t f, r48l, r48r; + uint32_t saltbits = ctx->saltbits; + int round, rk_step; + + /* Zero encryptions/decryptions doesn't make sense. */ + if (count == 0) + count = 1; + + if (decrypt) + { + kl1 = ctx->keysl + 15; + kr1 = ctx->keysr + 15; + rk_step = -1; + } + else + { + kl1 = ctx->keysl; + kr1 = ctx->keysr; + rk_step = 1; + } + + /* Read the input, which is notionally in "big-endian" format. */ + l_in = be32_to_cpu (in); + r_in = be32_to_cpu (in + 4); + + /* Do initial permutation. */ + l = ip_maskl[0][(l_in >> 24) & 0xff] + | ip_maskl[1][(l_in >> 16) & 0xff] + | ip_maskl[2][(l_in >> 8) & 0xff] + | ip_maskl[3][(l_in >> 0) & 0xff] + | ip_maskl[4][(r_in >> 24) & 0xff] + | ip_maskl[5][(r_in >> 16) & 0xff] + | ip_maskl[6][(r_in >> 8) & 0xff] + | ip_maskl[7][(r_in >> 0) & 0xff]; + r = ip_maskr[0][(l_in >> 24) & 0xff] + | ip_maskr[1][(l_in >> 16) & 0xff] + | ip_maskr[2][(l_in >> 8) & 0xff] + | ip_maskr[3][(l_in >> 0) & 0xff] + | ip_maskr[4][(r_in >> 24) & 0xff] + | ip_maskr[5][(r_in >> 16) & 0xff] + | ip_maskr[6][(r_in >> 8) & 0xff] + | ip_maskr[7][(r_in >> 0) & 0xff]; + + do + { + kl = kl1; + kr = kr1; + round = 16; + do + { + /* Expand R to 48 bits (simulate the E-box). */ + r48l = ((r & 0x00000001) << 23) + | ((r & 0xf8000000) >> 9) + | ((r & 0x1f800000) >> 11) + | ((r & 0x01f80000) >> 13) + | ((r & 0x001f8000) >> 15); + r48r = ((r & 0x0001f800) << 7) + | ((r & 0x00001f80) << 5) + | ((r & 0x000001f8) << 3) + | ((r & 0x0000001f) << 1) + | ((r & 0x80000000) >> 31); + + /* Apply salt and permuted round key. */ + f = (r48l ^ r48r) & saltbits; + r48l ^= f ^ *kl; + r48r ^= f ^ *kr; + kl += rk_step; + kr += rk_step; + + /* Do sbox lookups (which shrink it back to 32 bits) + and the pbox permutation at the same time. */ + f = psbox[0][m_sbox[0][r48l >> 12]] + | psbox[1][m_sbox[1][r48l & 0xfff]] + | psbox[2][m_sbox[2][r48r >> 12]] + | psbox[3][m_sbox[3][r48r & 0xfff]]; + + /* Now that we've permuted things, complete f(). */ + f ^= l; + l = r; + r = f; + } + while (--round); + + r = l; + l = f; + } + while (--count); + + /* Do final permutation (inverse of IP). */ + l_out = + fp_maskl[0][(l >> 24) & 0xff] + | fp_maskl[1][(l >> 16) & 0xff] + | fp_maskl[2][(l >> 8) & 0xff] + | fp_maskl[3][(l >> 0) & 0xff] + | fp_maskl[4][(r >> 24) & 0xff] + | fp_maskl[5][(r >> 16) & 0xff] + | fp_maskl[6][(r >> 8) & 0xff] + | fp_maskl[7][(r >> 0) & 0xff]; + r_out = + fp_maskr[0][(l >> 24) & 0xff] + | fp_maskr[1][(l >> 16) & 0xff] + | fp_maskr[2][(l >> 8) & 0xff] + | fp_maskr[3][(l >> 0) & 0xff] + | fp_maskr[4][(r >> 24) & 0xff] + | fp_maskr[5][(r >> 16) & 0xff] + | fp_maskr[6][(r >> 8) & 0xff] + | fp_maskr[7][(r >> 0) & 0xff]; + + cpu_to_be32 (out, l_out); + cpu_to_be32 (out + 4, r_out); +} diff --git a/des.h b/des.h new file mode 100644 index 0000000..2af1041 --- /dev/null +++ b/des.h @@ -0,0 +1,77 @@ +/* + * FreeSec: libcrypt for NetBSD + * + * Copyright (c) 1994 David Burren + * All rights reserved. + * + * Adapted for FreeBSD-2.0 by Geoffrey M. Rehmet + * this file should now *only* export crypt(), in order to make + * binaries of libcrypt exportable from the USA + * + * Adapted for FreeBSD-4.0 by Mark R V Murray + * this file should now *only* export crypt_des(), in order to make + * a module that can be optionally included in libcrypt. + * + * Adapted for libxcrypt by Zack Weinberg, 2017 + * see notes in des.c + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the author nor the names of other contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This is an original implementation of the DES and the crypt(3) interfaces + * by David Burren . + */ + +#ifndef _FREESEC_DES_H +#define _FREESEC_DES_H 1 + +#include +#include + +/* des.c */ + +struct des_ctx +{ + uint32_t keysl[16]; + uint32_t keysr[16]; + uint32_t saltbits; +}; + +extern void des_set_key (struct des_ctx *restrict ctx, + const unsigned char key[8]); +extern void des_set_salt (struct des_ctx *restrict ctx, + uint32_t salt); +extern void des_crypt_block (struct des_ctx *restrict ctx, + unsigned char *out, const unsigned char *in, + unsigned int count, bool decrypt); + +/* des-tables.c (generated by des-mktables) */ +extern const uint8_t m_sbox[4][4096]; +extern const uint32_t ip_maskl[8][256], ip_maskr[8][256]; +extern const uint32_t fp_maskl[8][256], fp_maskr[8][256]; +extern const uint32_t key_perm_maskl[8][128], key_perm_maskr[8][128]; +extern const uint32_t comp_maskl[8][128], comp_maskr[8][128]; +extern const uint32_t psbox[4][256]; + +#endif /* alg-des.h */ diff --git a/utils.c b/utils.c index f9aa906..30ed0ae 100644 --- a/utils.c +++ b/utils.c @@ -27,13 +27,14 @@ #include #include #include -#include #include #include #include /* for ntohs() */ #include #include + #include "utils.h" +#include "des.h" void lamont_hdump(unsigned char *bp, unsigned int length); char *printmac(unsigned char *mac); @@ -134,53 +135,15 @@ void MakeKey(unsigned char *key, unsigned char *des_key) } -/* in == 8-byte string (expanded version of the 56-bit key) - * out == 64-byte string where each byte is either 1 or 0 - * Note that the low-order "bit" is always ignored by by setkey() - */ -void Expand(unsigned char *in, unsigned char *out) -{ - int j, c; - int i; - - for (i = 0; i < 64; in++) { - c = *in; - for (j = 7; j >= 0; j--) - *out++ = (c >> j) & 1; - i += 8; - } -} - -/* The inverse of Expand - */ -void Collapse(unsigned char *in, unsigned char *out) -{ - int j; - int i; - unsigned int c; - - for (i = 0; i < 64; i += 8, out++) { - c = 0; - for (j = 7; j >= 0; j--, in++) - c |= *in << j; - *out = c & 0xff; - } -} - void DesEncrypt(unsigned char *clear, unsigned char *key, unsigned char *cipher) { unsigned char des_key[8]; - unsigned char crypt_key[66]; - unsigned char des_input[66]; + struct des_ctx ctx; MakeKey(key, des_key); - - Expand(des_key, crypt_key); - setkey((char *)crypt_key); - - Expand(clear, des_input); - encrypt((char *)des_input, 0); - Collapse(des_input, cipher); + des_set_salt(&ctx, 0); + des_set_key(&ctx, des_key); + des_crypt_block(&ctx, clear, cipher, 1, false); } int IsBlank(char *s) From 2bbb89aa3acf4f1a75b2f3f43898e5bd56afbf2d Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 20 Jun 2021 19:54:35 -0400 Subject: [PATCH 3/5] =?UTF-8?q?While=20we=E2=80=99re=20here,=20some=20lint?= =?UTF-8?q?ing.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Crank up the warnings level (-Wextra -Wpedantic -Wstrict-prototypes) - Explicitly request C2011 with extensions. - Explicitly request 64-bit off_t. - Fix all the resulting warnings. The only code change of note is that I deleted struct dot11_mgmt from ieee80211.h. This was using the old GNU zero-length array extension in a way that is not supported for C99 flexible array members, and it’s unused in this program, so the easiest fix is to get rid of it. --- Makefile | 5 +++-- asleap.c | 27 ++++++++++++++------------- genkeys.c | 11 +++++------ ieee80211.h | 49 ------------------------------------------------- md4.c | 4 +--- 5 files changed, 23 insertions(+), 73 deletions(-) diff --git a/Makefile b/Makefile index 51552c8..c765cce 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,9 @@ # i think thats all anyone does # make is a twisted beast ################################## -CFLAGS = -g3 -Og -Wall -CPPFLAGS = +CFLAGS = -g3 -Og -std=gnu11 \ + -Wall -Wextra -Wpedantic -Wstrict-prototypes +CPPFLAGS = -D_FILE_OFFSET_BITS=64 LDLIBS = -lpcap PROG = asleap genkeys diff --git a/asleap.c b/asleap.c index d8d5dd2..dde549d 100644 --- a/asleap.c +++ b/asleap.c @@ -72,14 +72,14 @@ unsigned long pcount=0; /* prototypes */ void usage(char *message); -void cleanup(); +void cleanup(void); void print_leapexch(struct asleap_data *asleap_ptr); void print_hashlast2(struct asleap_data *asleap_ptr); void print_leappw(struct asleap_data *asleap_ptr); int gethashlast2(struct asleap_data *asleap_ptr); int getmschappw(struct asleap_data *asleap_ptr); int getpacket(pcap_t *p); -int listdevs(); +int listdevs(void); int testleapchal(struct asleap_data *asleap_ptr, int plen, int offset); int testleapsuccess(struct asleap_data *asleap_ptr, int plen, int offset); int testleapresp(struct asleap_data *asleap_ptr, int plen, int offset); @@ -235,7 +235,7 @@ void print_leappw(struct asleap_data *asleap_ptr) } -void cleanup() +void cleanup(void) { if (p != NULL) { @@ -352,7 +352,7 @@ int getmschappw(struct asleap_data *asleap_ptr) struct hashpass_rec rec; struct hashpassidx_rec idxrec; char password_buf[MAX_NT_PASSWORD]; - int passlen, recordlength, passwordlen, i; + int passlen, recordlength, passwordlen; FILE *buffp, *idxfp; /* If the user passed an index file for our reference, fseek to @@ -449,7 +449,7 @@ int getmschappw(struct asleap_data *asleap_ptr) return (-1); } - for (i = 0; i < idxrec.numrec; i++) { + for (size_t i = 0; i < idxrec.numrec; i++) { memset(&rec, 0, sizeof(rec)); memset(&password_buf, 0, sizeof(password_buf)); @@ -1029,7 +1029,7 @@ int testpptpchal(struct asleap_data *asleap_ptr, int plen, int offset) int testpptpresp(struct asleap_data *asleap_ptr, int plen, int offset) { - int usernamelen; + unsigned long usernamelen; struct pppchaphdr *pppchap; pppchap = (struct pppchaphdr *)(packet+offset); @@ -1324,7 +1324,7 @@ char *getdevice(char *optarg) } /* List all the available interfaces, adapted from WinDump code */ -int listdevs() +int listdevs(void) { pcap_if_t *devpointer; @@ -1353,7 +1353,7 @@ int radiotap_offset(pcap_t *p, struct pcap_pkthdr *h) { struct ieee80211_radiotap_header *rtaphdr; - int rtaphdrlen=0; + uint32_t rtaphdrlen=0; /* Grab a packet to examine radiotap header */ if (pcap_next_ex(p, &h, (const u_char **)&packet) > -1) { @@ -1376,7 +1376,8 @@ int radiotap_offset(pcap_t *p, struct pcap_pkthdr *h) int main(int argc, char *argv[]) { - int c, opt_verbose = 0, offset = 0; + int c, opt_verbose = 0; + size_t offset = 0; char *device, dictfile[255], dictidx[255], pcapfile[255]; struct asleap_data asleap; struct stat dictstat, capturedatastat; @@ -1391,9 +1392,9 @@ int main(int argc, char *argv[]) memset(&asleap, 0, sizeof(asleap)); device = NULL; - signal(SIGINT, cleanup); - signal(SIGTERM, cleanup); - signal(SIGQUIT, cleanup); + signal(SIGINT, (void (*)(int))cleanup); + signal(SIGTERM, (void (*)(int))cleanup); + signal(SIGQUIT, (void (*)(int))cleanup); printf("asleap %s - actively recover LEAP/PPTP passwords. " "\n", VER); @@ -1559,7 +1560,7 @@ int main(int argc, char *argv[]) offset = radiotap_offset(p, &h); if (offset < sizeof(struct ieee80211_radiotap_header)) { fprintf(stderr, "Unable to determine offset " - "from radiotap header (%d).\n", offset); + "from radiotap header (%zd).\n", offset); return(-1); } break; diff --git a/genkeys.c b/genkeys.c index 545b70e..245c290 100644 --- a/genkeys.c +++ b/genkeys.c @@ -37,16 +37,15 @@ unsigned long long sortcount; int compfunc(const void *x, const void *y) { - - struct hashpass_rec rec1, rec2; + const struct hashpass_rec *rec1, *rec2; sortcount++; - rec1 = (struct hashpass_rec)(*(struct hashpass_rec *)x); - rec2 = (struct hashpass_rec)(*(struct hashpass_rec *)y); + rec1 = (const struct hashpass_rec *)x; + rec2 = (const struct hashpass_rec *)y; - if (rec1.hash[15] == rec2.hash[15]) { + if (rec1->hash[15] == rec2->hash[15]) { return (0); - } else if (rec1.hash[15] < rec2.hash[15]) { + } else if (rec1->hash[15] < rec2->hash[15]) { return (-1); } else { return (1); diff --git a/ieee80211.h b/ieee80211.h index 17dccf9..09bd295 100644 --- a/ieee80211.h +++ b/ieee80211.h @@ -185,55 +185,6 @@ struct dot11hdr_a4 { } __attribute__ ((packed)); -struct dot11_mgmt { - union { - struct { - uint16_t auth_algo; - uint16_t auth_transaction; - uint16_t status_code; - /* possibly followed by Challenge text */ - uint8_t variable[0]; - } __attribute__ ((packed)) auth; - struct { - uint16_t reason_code; - } __attribute__ ((packed)) deauth; - struct { - uint16_t capab_info; - uint16_t listen_interval; - /* followed by SSID and Supported rates */ - uint8_t variable[0]; - } __attribute__ ((packed)) assoc_req; - struct { - uint16_t capab_info; - uint16_t status_code; - uint16_t aid; - /* followed by Supported rates */ - uint8_t variable[0]; - } __attribute__ ((packed)) assoc_resp, reassoc_resp; - struct { - uint16_t capab_info; - uint16_t listen_interval; - uint8_t current_ap[6]; - /* followed by SSID and Supported rates */ - uint8_t variable[0]; - } __attribute__ ((packed)) reassoc_req; - struct { - uint16_t reason_code; - } __attribute__ ((packed)) disassoc; - struct { - uint8_t variable[0]; - } __attribute__ ((packed)) probe_req; - struct { - uint8_t timestamp[8]; - uint16_t beacon_int; - uint16_t capab_info; - /* followed by some of SSID, Supported rates, - * FH Params, DS Params, CF Params, IBSS Params, TIM */ - uint8_t variable[0]; - } __attribute__ ((packed)) beacon; - } u; -} __attribute__ ((packed)); - /* IEEE 802.11 fixed parameters */ struct ieee80211_beacon_fixparm { uint8_t timestamp[8]; diff --git a/md4.c b/md4.c index 6a0b7ab..10cdbba 100644 --- a/md4.c +++ b/md4.c @@ -118,9 +118,7 @@ MD4_CTX *MDp; ** Does not update MDp->count. ** This routine is not user-callable. */ -static void MDblock(MDp, Xb) -MD4_CTX *MDp; -unsigned char *Xb; +static void MDblock(MD4_CTX *MDp, unsigned char *Xb) { register unsigned int tmp, A, B, C, D; unsigned int X[16]; From 2f2ddffaaad36b8ad48450cafe925eb845aa29c9 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 20 Jun 2021 20:01:35 -0400 Subject: [PATCH 4/5] Realign the Cygwin makefile with the Unix makefile. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The only differences are now: - use of .obj and .exe extensions instead of .o and null - -L$(WPDPACK)/lib -lwpcap instead of -lpcap - no ‘strip’ target --- makefile.cygwin | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/makefile.cygwin b/makefile.cygwin index 8f851ac..31a5409 100644 --- a/makefile.cygwin +++ b/makefile.cygwin @@ -7,35 +7,35 @@ # i think thats all anyone does # make is a twisted beast ################################## -WPDPACK = ../WPdpack -LDLIBS = -L$(WPDPACK)/Lib -lwpcap -lcrypt -static -CFLAGS = -g3 -ggdb -pipe -Wall -I./cygwin -D_FILE_OFFSET_BITS=64 -CFLGAS += -D_LARGEFILE_SOURCE -PROGOBJ = asleap.o genkeys.o utils.o common.o apeek.o sha1.o -PROG = asleap genkeys -all: $(PROG) $(PROGOBJ) +WPDPACK = ../wpdpack -apeek: apeek.c - $(CC) $(CFLAGS) apeek.c -c +CFLAGS = -g3 -Og -std=gnu11 \ + -Wall -Wextra -Wpedantic -Wstrict-prototypes +CPPFLAGS = -D_FILE_OFFSET_BITS=64 +LDLIBS = -L$(WPDPACK)/lib -lwpcap -utils: utils.c utils.h - $(CC) $(CFLAGS) utils.c -c +PROG = asleap.exe genkeys.exe +COMMON_OBJS = common.obj des.obj des-tables.obj md4.obj \ + sha1.obj utils.obj -common: common.c common.h - $(CC) $(CFLAGS) common.c -c +all: $(PROG) -sha1: sha1.c sha1.h - $(CC) $(CFLAGS) sha1.c -c +asleap.exe: asleap.obj $(COMMON_OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS) -asleap: asleap.c asleap.h sha1.o common.o common.h utils.o apeek.o \ - version.h sha1.c sha1.h apeek.h - $(CC) $(CFLAGS) asleap.c -o asleap \ - common.o utils.o apeek.o sha1.o $(LDLIBS) +genkeys.exe: genkeys.obj $(COMMON_OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS) -genkeys: genkeys.c md4.c md4.h common.o utils.o - $(CC) $(CFLAGS) md4.c genkeys.c -o genkeys \ - common.o utils.o -lcrypt +asleap.obj: asleap.c asleap.h utils.h common.h version.h sha1.h radiotap.h \ + byteswap.h ieee80211.h ieee8021x.h ietfproto.h +common.obj: common.c common.h utils.h md4.h +des.obj: des.c des.h +des-tables.obj: des-tables.c des.h +genkeys.obj: genkeys.c common.h version.h utils.h +sha1.obj: sha1.c common.h sha1.h +md4.obj: md4.c md4.h +utils.obj: utils.c utils.h clean: - $(RM) $(PROGOBJ) $(PROG) asleap.exe genkeys.exe *~ + -$(RM) -f $(PROG) asleap.obj genkeys.obj $(COMMON_OBJS) From eb3bd42098cba42b65f499c9d8c73d890861b94f Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Sun, 20 Jun 2021 20:10:53 -0400 Subject: [PATCH 5/5] Update compilation instructions. --- COMPILING.md | 23 ++++++----------------- README.md | 7 +++++++ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/COMPILING.md b/COMPILING.md index b9e9ef3..101a465 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -1,24 +1,13 @@ # Compiling the Source -To compile this source you will need the [libxcrypt](https://github.com/besser82/libxcrypt/) -library. At the time of this writing, this is `libxcrypt-dev` on Debian-like systems. Check -your Linux distribution for installation directions. For Debian systems: +To compile this source you will need libpcap. Check your Linux +distribution for installation instructions. On Debian-like systems: ``` -$ sudo apt update && sudo apt install libxcrypt-dev -y +$ sudo apt update && sudo apt install libpcap-dev ``` -To build this tool, change to the `asleap` directory and run `make`: +No other external libraries are required. -``` -$ make -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 -c -o sha1.o sha1.c -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 -c -o common.o common.c -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 -c -o utils.o utils.c -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 asleap.c -o asleap common.o utils.o sha1.o -lpcap -lxcrypt -lcrypto -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 md4.c genkeys.c -o genkeys common.o utils.o -lpcap -lxcrypt -lcrypto -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 -c -o asleap.o asleap.c -gcc -pipe -Wall -D_LINUX -D_OPENSSL_MD4 -g3 -c -o genkeys.o genkeys.c -``` - -Optionally you can edit the `Makefile` and change the compiler to clang as desired. +To build this tool, change to the `asleap` directory and run `make`. +You can override CC and/or CFLAGS on the `make` command line as usual. diff --git a/README.md b/README.md index 4f1a68c..3d2d6a7 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,13 @@ Pronounced "asleep". Copyright(c) 2004-2020, [Joshua Wright](https://github.com/joswr1ght) ------------------------------------------------------------------------------- +## UPDATE - 2021-06-20 + +Due to setkey and encrypt being slated to be removed from libxcrypt as +well, bundle our own DES implementation. Also use our existing +bundled MD4 implementation on all operating systems, rather than +depending on OpenSSL. + ## UPDATE - 2020-11-28 Due to GLIBC removal of setkey and crypt functions, link to libxcrypt to