From 4298c1a72616f00a3d36812e946bb679156f639c Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 11 Oct 2020 17:26:47 -0700 Subject: [PATCH] MSVC compatibility 1. MSVC compatibility 2. CONFIG_VERSION (too common/generic) replaced by QUICKJS_VERSION due to clashes with other libraries that use CONFIG_VERSION too --- .gitignore | 9 + cutils.c | 26 +- cutils.h | 97 +- libregexp.c | 2 +- premake5.lua | 107 +++ qjs.c | 8 +- qjsc.c | 7 +- quickjs-libc.c | 22 +- quickjs-version.h | 1 + quickjs.c | 17 +- quickjs.h | 5 +- repl.c | 2026 ++++++++++++++++++++++++++++++++++++++++ win/dirent.h | 1166 +++++++++++++++++++++++ win/getopt.h | 653 +++++++++++++ win/premake-vs2017.bat | 4 + win/premake-vs2019.bat | 4 + 16 files changed, 4127 insertions(+), 27 deletions(-) create mode 100644 .gitignore create mode 100644 premake5.lua create mode 100644 quickjs-version.h create mode 100644 repl.c create mode 100644 win/dirent.h create mode 100644 win/getopt.h create mode 100644 win/premake-vs2017.bat create mode 100644 win/premake-vs2019.bat diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..837d3a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# OS generated files +## Mac OS X +.DS_Store +.Trashes +.Spotlight-V100 +# # Windows +Thumbs.db +.bin +.build diff --git a/cutils.c b/cutils.c index a02fb76..eb1ef6e 100644 --- a/cutils.c +++ b/cutils.c @@ -29,6 +29,30 @@ #include "cutils.h" +#ifdef _MSC_VER + + // From: https://stackoverflow.com/a/26085827 +int gettimeofday(struct timeval * tp, struct timezone * tzp) +{ + static const uint64_t EPOCH = ((uint64_t)116444736000000000ULL); + + SYSTEMTIME system_time; + FILETIME file_time; + uint64_t time; + + GetSystemTime(&system_time); + SystemTimeToFileTime(&system_time, &file_time); + time = ((uint64_t)file_time.dwLowDateTime); + time += ((uint64_t)file_time.dwHighDateTime) << 32; + + tp->tv_sec = (long)((time - EPOCH) / 10000000L); + tp->tv_usec = (long)(system_time.wMilliseconds * 1000); + + return 0; +} +#endif + + void pstrcpy(char *buf, int buf_size, const char *str) { int c; @@ -297,7 +321,7 @@ int unicode_from_utf8(const uint8_t *p, int max_len, const uint8_t **pp) return -1; c = (c << 6) | (b & 0x3f); } - if (c < utf8_min_code[l - 1]) + if (c < (int)utf8_min_code[l - 1]) return -1; *pp = p; return c; diff --git a/cutils.h b/cutils.h index 31f7cd8..0ee81fd 100644 --- a/cutils.h +++ b/cutils.h @@ -28,14 +28,32 @@ #include #include +#ifdef _MSC_VER + #include + #include +#else + #include +#endif + /* set if CPU is big endian */ #undef WORDS_BIGENDIAN -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#define force_inline inline __attribute__((always_inline)) -#define no_inline __attribute__((noinline)) -#define __maybe_unused __attribute__((unused)) +#ifndef __has_attribute + #define likely(x) (x) + #define unlikely(x) (x) + #define force_inline __forceinline + #define no_inline __declspec(noinline) + #define __maybe_unused + #define __attribute__(x) + #define __attribute(x) + typedef size_t ssize_t; +#else + #define likely(x) __builtin_expect(!!(x), 1) + #define unlikely(x) __builtin_expect(!!(x), 0) + #define force_inline inline __attribute__((always_inline)) + #define no_inline __attribute__((noinline)) + #define __maybe_unused __attribute__((unused)) +#endif #define xglue(x, y) x ## y #define glue(x, y) xglue(x, y) @@ -114,27 +132,91 @@ static inline int64_t min_int64(int64_t a, int64_t b) /* WARNING: undefined if a = 0 */ static inline int clz32(unsigned int a) { +#ifdef _MSC_VER + unsigned long idx; + _BitScanReverse(&idx, a); + return 31 ^ idx; +#else return __builtin_clz(a); +#endif } /* WARNING: undefined if a = 0 */ static inline int clz64(uint64_t a) { - return __builtin_clzll(a); +#ifdef _MSC_VER + unsigned long where; + // BitScanReverse scans from MSB to LSB for first set bit. + // Returns 0 if no set bit is found. +#if INTPTR_MAX >= INT64_MAX // 64-bit + if (_BitScanReverse64(&where, a)) + return (int)(63 - where); +#else + // Scan the high 32 bits. + if (_BitScanReverse(&where, (uint32_t)(a >> 32))) + return (int)(63 - (where + 32)); // Create a bit offset from the MSB. + // Scan the low 32 bits. + if (_BitScanReverse(&where, (uint32_t)(a))) + return (int)(63 - where); +#endif + return 64; // Undefined Behavior. +#else + return __builtin_clzll(a); +#endif } /* WARNING: undefined if a = 0 */ static inline int ctz32(unsigned int a) { +#ifdef _MSC_VER + unsigned long idx; + _BitScanForward(&idx, a); + return 31 ^ idx; +#else return __builtin_ctz(a); +#endif } /* WARNING: undefined if a = 0 */ static inline int ctz64(uint64_t a) { - return __builtin_ctzll(a); +#ifdef _MSC_VER + unsigned long where; + // Search from LSB to MSB for first set bit. + // Returns zero if no set bit is found. +#if INTPTR_MAX >= INT64_MAX // 64-bit + if (_BitScanForward64(&where, a)) + return (int)(where); +#else + // Win32 doesn't have _BitScanForward64 so emulate it with two 32 bit calls. + // Scan the Low Word. + if (_BitScanForward(&where, (uint32_t)(a))) + return (int)(where); + // Scan the High Word. + if (_BitScanForward(&where, (uint32_t)(a >> 32))) + return (int)(where + 32); // Create a bit offset from the LSB. +#endif + return 64; +#else + return __builtin_ctzll(a); +#endif } +#ifdef _MSC_VER +#pragma pack(push, 1) +struct packed_u64 { + uint64_t v; +}; + +struct packed_u32 { + uint32_t v; +}; + +struct packed_u16 { + uint16_t v; +}; +#pragma pack(pop) +#else struct __attribute__((packed)) packed_u64 { uint64_t v; }; @@ -146,6 +228,7 @@ struct __attribute__((packed)) packed_u32 { struct __attribute__((packed)) packed_u16 { uint16_t v; }; +#endif static inline uint64_t get_u64(const uint8_t *tab) { diff --git a/libregexp.c b/libregexp.c index bbb5e9d..34920f0 100644 --- a/libregexp.c +++ b/libregexp.c @@ -465,7 +465,7 @@ static int parse_digits(const uint8_t **pp, BOOL allow_overflow) p++; } *pp = p; - return v; + return (int)v; } static int re_parse_expect(REParseState *s, const uint8_t **pp, int c) diff --git a/premake5.lua b/premake5.lua new file mode 100644 index 0000000..2c60816 --- /dev/null +++ b/premake5.lua @@ -0,0 +1,107 @@ + +----------------------------------------------------------------------------------------------------------------------- + +(function() + -- generate "quickjs-version.h" using VERSION file + local file = io.open("VERSION", "r") + local vers = file:read() + file:close() + vars = vers:gsub("%s+", "") + file = io.open("quickjs-version.h", "w+") + file:write("#define QUICKJS_VERSION \"" .. vers .. "\"\r\n") + file:close() +end)() + + +workspace "quickjs-msvc" + -- Premake output folder + location(path.join(".build", _ACTION)) + + platforms { "x86", "x64", "arm32", "arm64" } + + -- Configuration settings + configurations { "Debug", "Release" } + + filter "platforms:x86" + architecture "x86" + filter "platforms:x64" + architecture "x86_64" + filter "platforms:arm32" + architecture "ARM" + filter "platforms:arm64" + architecture "ARM64" + + filter "system:windows" + removeplatforms { "arm32" } + + -- Debug configuration + filter { "configurations:Debug" } + defines { "DEBUG" } + symbols "On" + optimize "Off" + + -- Release configuration + filter { "configurations:Release" } + defines { "NDEBUG" } + optimize "Speed" + inlining "Auto" + + filter { "language:not C#" } + defines { "_CRT_SECURE_NO_WARNINGS" } + buildoptions { "/std:c++latest" } + systemversion "latest" + + filter { } + targetdir ".bin/%{cfg.longname}/" + exceptionhandling "Off" + rtti "Off" + --vectorextensions "AVX2" + +----------------------------------------------------------------------------------------------------------------------- + +project "quickjs" + language "C" + kind "StaticLib" + files { + "cutils.h", + "cutils.c", + "libregexp.c", + "libunicode.c", + "quickjs.c", + "quickjs-libc.c", + "libregexp.h", + "libregexp-opcode.h", + "libunicode.h", + "libunicode-table.h", + "list.h", + "quickjs.h", + "quickjs-atom.h", + "quickjs-libc.h", + "quickjs-opcode.h" + } + +----------------------------------------------------------------------------------------------------------------------- + +project "qjsc" + language "C" + kind "ConsoleApp" + links { "quickjs" } + files { + "qjsc.c" + } + +----------------------------------------------------------------------------------------------------------------------- + +project "qjs" + language "C" + kind "ConsoleApp" + links { "quickjs" } + dependson { "qjsc" } + files { + "qjs.c", + "repl.js", + "repl.c" + } + +-- Compile repl.js and save bytecode into repl.c +prebuildcommands { "\"%{cfg.buildtarget.directory}/qjsc.exe\" -c -o \"../../repl.c\" -m \"../../repl.js\"" } diff --git a/qjs.c b/qjs.c index 4dd11f8..ebfa457 100644 --- a/qjs.c +++ b/qjs.c @@ -28,18 +28,20 @@ #include #include #include -#include #include #include #include #if defined(__APPLE__) #include +#include #elif defined(__linux__) #include +#include #endif #include "cutils.h" #include "quickjs-libc.h" +#include "quickjs-version.h" extern const uint8_t qjsc_repl[]; extern const uint32_t qjsc_repl_size; @@ -276,7 +278,7 @@ static const JSMallocFunctions trace_mf = { void help(void) { - printf("QuickJS version " CONFIG_VERSION "\n" + printf("QuickJS version " QUICKJS_VERSION "\n" "usage: " PROG_NAME " [options] [file [args]]\n" "-h --help list options\n" "-e --eval EXPR evaluate EXPR\n" @@ -448,8 +450,10 @@ int main(int argc, char **argv) } } +#ifdef CONFIG_BIGNUM if (load_jscalc) bignum_ext = 1; +#endif if (trace_memory) { js_trace_malloc_init(&trace_data); diff --git a/qjsc.c b/qjsc.c index f5bda57..b1e8c51 100644 --- a/qjsc.c +++ b/qjsc.c @@ -27,14 +27,17 @@ #include #include #include -#include #include #if !defined(_WIN32) #include + #include +#else + #include "win/getopt.h" #endif #include "cutils.h" #include "quickjs-libc.h" +#include "quickjs-version.h" typedef struct { char *name; @@ -341,7 +344,7 @@ static const char main_c_template2[] = void help(void) { - printf("QuickJS Compiler version " CONFIG_VERSION "\n" + printf("QuickJS Compiler version " QUICKJS_VERSION "\n" "usage: " PROG_NAME " [options] [files]\n" "\n" "options are:\n" diff --git a/quickjs-libc.c b/quickjs-libc.c index 00a7536..11ddf4a 100644 --- a/quickjs-libc.c +++ b/quickjs-libc.c @@ -28,20 +28,30 @@ #include #include #include -#include #include #include -#include #include #include #include #include -#include #if defined(_WIN32) -#include -#include -#include + #include + #include + #include + #include + #include + #include + #include + #include "win/dirent.h" + #ifndef PATH_MAX + #define PATH_MAX MAX_PATH + #endif + #define popen _popen + #define pclose _pclose #else + #include + #include + #include #include #include #include diff --git a/quickjs-version.h b/quickjs-version.h new file mode 100644 index 0000000..1eed74f --- /dev/null +++ b/quickjs-version.h @@ -0,0 +1 @@ +#define QUICKJS_VERSION "2020-09-06" \ No newline at end of file diff --git a/quickjs.c b/quickjs.c index efc1d54..d5c18c1 100644 --- a/quickjs.c +++ b/quickjs.c @@ -28,14 +28,15 @@ #include #include #include -#include #include #include #include #if defined(__APPLE__) #include +#include #elif defined(__linux__) #include +#include #endif #include "cutils.h" @@ -48,7 +49,7 @@ #define OPTIMIZE 1 #define SHORT_OPCODES 1 -#if defined(EMSCRIPTEN) +#if defined(EMSCRIPTEN) || defined(_MSC_VER) #define DIRECT_DISPATCH 0 #else #define DIRECT_DISPATCH 1 @@ -67,11 +68,11 @@ /* define to include Atomics.* operations which depend on the OS threads */ -#if !defined(EMSCRIPTEN) +#if !defined(EMSCRIPTEN) && !defined(_MSC_VER) #define CONFIG_ATOMICS #endif -#if !defined(EMSCRIPTEN) +#if !defined(EMSCRIPTEN) && !defined(_MSC_VER) /* enable stack limitation */ #define CONFIG_STACK_CHECK #endif @@ -6157,7 +6158,7 @@ void JS_DumpMemoryUsage(FILE *fp, const JSMemoryUsage *s, JSRuntime *rt) #ifdef CONFIG_BIGNUM "BigNum " #endif - CONFIG_VERSION " version, %d-bit, malloc limit: %"PRId64"\n\n", + QUICKJS_VERSION " version, %d-bit, malloc limit: %"PRId64"\n\n", (int)sizeof(void *) * 8, (int64_t)(ssize_t)s->malloc_limit); #if 1 if (rt) { @@ -10164,7 +10165,11 @@ static JSValue js_atof(JSContext *ctx, const char *str, const char **pp, } else #endif { +#ifdef _MSC_VER + double d = INFINITY; +#else double d = 1.0 / 0.0; +#endif if (is_neg) d = -d; val = JS_NewFloat64(ctx, d); @@ -41345,7 +41350,7 @@ static JSValue js_math_min_max(JSContext *ctx, JSValueConst this_val, uint32_t tag; if (unlikely(argc == 0)) { - return __JS_NewFloat64(ctx, is_max ? -1.0 / 0.0 : 1.0 / 0.0); + return __JS_NewFloat64(ctx, is_max ? -INFINITY : INFINITY); } tag = JS_VALUE_GET_TAG(argv[0]); diff --git a/quickjs.h b/quickjs.h index bb84829..94c4512 100644 --- a/quickjs.h +++ b/quickjs.h @@ -27,6 +27,7 @@ #include #include +#include "quickjs-version.h" #ifdef __cplusplus extern "C" { @@ -517,9 +518,9 @@ static js_force_inline JSValue JS_NewInt64(JSContext *ctx, int64_t val) { JSValue v; if (val == (int32_t)val) { - v = JS_NewInt32(ctx, val); + v = JS_NewInt32(ctx, (int32_t)val); } else { - v = __JS_NewFloat64(ctx, val); + v = __JS_NewFloat64(ctx, (double)val); } return v; } diff --git a/repl.c b/repl.c new file mode 100644 index 0000000..6c634c6 --- /dev/null +++ b/repl.c @@ -0,0 +1,2026 @@ +/* File generated automatically by the QuickJS compiler. */ + +#include + +const uint32_t qjsc_repl_size = 16136; + +const uint8_t qjsc_repl[16136] = { + 0x01, 0xa6, 0x03, 0x1a, 0x2e, 0x2e, 0x2f, 0x2e, + 0x2e, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x2e, 0x6a, + 0x73, 0x06, 0x73, 0x74, 0x64, 0x04, 0x6f, 0x73, + 0x10, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x74, + 0x65, 0x14, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, + 0x6c, 0x6f, 0x61, 0x74, 0x08, 0x6f, 0x70, 0x65, + 0x6e, 0x10, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x10, 0x42, 0x69, 0x67, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x08, 0x1b, 0x5b, 0x30, 0x6d, + 0x08, 0x6e, 0x6f, 0x6e, 0x65, 0x0a, 0x1b, 0x5b, + 0x33, 0x30, 0x6d, 0x0a, 0x62, 0x6c, 0x61, 0x63, + 0x6b, 0x0a, 0x1b, 0x5b, 0x33, 0x31, 0x6d, 0x06, + 0x72, 0x65, 0x64, 0x0a, 0x1b, 0x5b, 0x33, 0x32, + 0x6d, 0x0a, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x0a, + 0x1b, 0x5b, 0x33, 0x33, 0x6d, 0x0c, 0x79, 0x65, + 0x6c, 0x6c, 0x6f, 0x77, 0x0a, 0x1b, 0x5b, 0x33, + 0x34, 0x6d, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x0a, + 0x1b, 0x5b, 0x33, 0x35, 0x6d, 0x0e, 0x6d, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x61, 0x0a, 0x1b, 0x5b, + 0x33, 0x36, 0x6d, 0x08, 0x63, 0x79, 0x61, 0x6e, + 0x0a, 0x1b, 0x5b, 0x33, 0x37, 0x6d, 0x0a, 0x77, + 0x68, 0x69, 0x74, 0x65, 0x0e, 0x1b, 0x5b, 0x33, + 0x30, 0x3b, 0x31, 0x6d, 0x08, 0x67, 0x72, 0x61, + 0x79, 0x08, 0x67, 0x72, 0x65, 0x79, 0x0e, 0x1b, + 0x5b, 0x33, 0x31, 0x3b, 0x31, 0x6d, 0x14, 0x62, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x72, 0x65, + 0x64, 0x0e, 0x1b, 0x5b, 0x33, 0x32, 0x3b, 0x31, + 0x6d, 0x18, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x0e, 0x1b, + 0x5b, 0x33, 0x33, 0x3b, 0x31, 0x6d, 0x1a, 0x62, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x79, 0x65, + 0x6c, 0x6c, 0x6f, 0x77, 0x0e, 0x1b, 0x5b, 0x33, + 0x34, 0x3b, 0x31, 0x6d, 0x16, 0x62, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x5f, 0x62, 0x6c, 0x75, 0x65, + 0x0e, 0x1b, 0x5b, 0x33, 0x35, 0x3b, 0x31, 0x6d, + 0x1c, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, + 0x6d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x61, 0x0e, + 0x1b, 0x5b, 0x33, 0x36, 0x3b, 0x31, 0x6d, 0x16, + 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x63, + 0x79, 0x61, 0x6e, 0x0e, 0x1b, 0x5b, 0x33, 0x37, + 0x3b, 0x31, 0x6d, 0x18, 0x62, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, + 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, 0x0e, 0x6b, + 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x08, 0x74, + 0x79, 0x70, 0x65, 0x14, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x0a, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x0c, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x04, 0x3e, 0x20, + 0x0c, 0x71, 0x6a, 0x73, 0x20, 0x3e, 0x20, 0x0c, + 0x20, 0x20, 0x2e, 0x2e, 0x2e, 0x20, 0x02, 0x01, + 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, + 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, + 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0d, 0x02, 0x0e, + 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, + 0x02, 0x14, 0x02, 0x18, 0x02, 0x19, 0x06, 0x1b, + 0x4f, 0x41, 0x06, 0x1b, 0x4f, 0x42, 0x06, 0x1b, + 0x4f, 0x43, 0x06, 0x1b, 0x4f, 0x44, 0x06, 0x1b, + 0x4f, 0x46, 0x06, 0x1b, 0x4f, 0x48, 0x0c, 0x1b, + 0x5b, 0x31, 0x3b, 0x35, 0x43, 0x0c, 0x1b, 0x5b, + 0x31, 0x3b, 0x35, 0x44, 0x08, 0x1b, 0x5b, 0x31, + 0x7e, 0x08, 0x1b, 0x5b, 0x33, 0x7e, 0x08, 0x1b, + 0x5b, 0x34, 0x7e, 0x08, 0x1b, 0x5b, 0x35, 0x7e, + 0x08, 0x1b, 0x5b, 0x36, 0x7e, 0x06, 0x1b, 0x5b, + 0x41, 0x06, 0x1b, 0x5b, 0x42, 0x06, 0x1b, 0x5b, + 0x43, 0x06, 0x1b, 0x5b, 0x44, 0x06, 0x1b, 0x5b, + 0x46, 0x06, 0x1b, 0x5b, 0x48, 0x04, 0x1b, 0x7f, + 0x04, 0x1b, 0x62, 0x04, 0x1b, 0x64, 0x04, 0x1b, + 0x66, 0x04, 0x1b, 0x6b, 0x04, 0x1b, 0x6c, 0x04, + 0x1b, 0x74, 0x04, 0x1b, 0x75, 0x02, 0x7f, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x43, 0x6d, 0x64, 0x10, + 0x74, 0x65, 0x72, 0x6d, 0x49, 0x6e, 0x69, 0x74, + 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x0c, + 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0x1a, 0x74, + 0x74, 0x79, 0x47, 0x65, 0x74, 0x57, 0x69, 0x6e, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x74, 0x74, 0x79, + 0x53, 0x65, 0x74, 0x52, 0x61, 0x77, 0x0c, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x0c, 0x53, 0x49, + 0x47, 0x49, 0x4e, 0x54, 0x1c, 0x73, 0x65, 0x74, + 0x52, 0x65, 0x61, 0x64, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x72, 0x1c, 0x73, 0x69, 0x67, 0x69, + 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x72, 0x16, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x22, 0x74, + 0x65, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, + 0x08, 0x72, 0x65, 0x61, 0x64, 0x0c, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x10, 0x69, 0x73, 0x5f, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x02, 0x41, 0x02, + 0x5a, 0x02, 0x61, 0x02, 0x7a, 0x10, 0x69, 0x73, + 0x5f, 0x64, 0x69, 0x67, 0x69, 0x74, 0x0e, 0x69, + 0x73, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x02, 0x5f, + 0x02, 0x24, 0x14, 0x75, 0x63, 0x73, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x14, 0x63, 0x68, + 0x61, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x41, 0x74, + 0x2a, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x69, + 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x72, + 0x72, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x16, 0x63, + 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x41, 0x74, 0x16, 0x69, 0x73, 0x5f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x04, 0x28, + 0x29, 0x04, 0x5b, 0x5d, 0x04, 0x7b, 0x7d, 0x20, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x65, 0x78, 0x74, + 0x08, 0x70, 0x75, 0x74, 0x73, 0x12, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x73, + 0x69, 0x04, 0x1b, 0x5b, 0x16, 0x6d, 0x6f, 0x76, + 0x65, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x06, 0x6d, 0x69, 0x6e, 0x02, 0x43, 0x02, 0x44, + 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x04, + 0x20, 0x08, 0x06, 0x1b, 0x5b, 0x4a, 0x06, 0x6f, + 0x75, 0x74, 0x0a, 0x66, 0x6c, 0x75, 0x73, 0x68, + 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x1a, + 0x71, 0x75, 0x6f, 0x74, 0x65, 0x64, 0x5f, 0x69, + 0x6e, 0x73, 0x65, 0x72, 0x74, 0x14, 0x71, 0x75, + 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, + 0x0a, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x06, 0x63, + 0x6d, 0x64, 0x14, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x0a, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x22, 0x62, 0x65, 0x67, 0x69, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x66, + 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x16, 0x65, 0x6e, + 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x69, 0x6e, + 0x65, 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x0c, 0x63, + 0x68, 0x61, 0x72, 0x41, 0x74, 0x1a, 0x62, 0x61, + 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x63, + 0x68, 0x61, 0x72, 0x22, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x24, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x5f, + 0x62, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x62, 0x61, + 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x77, + 0x6f, 0x72, 0x64, 0x16, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x16, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, + 0x61, 0x64, 0x64, 0x08, 0x70, 0x75, 0x73, 0x68, + 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x1a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x0e, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x1c, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x2e, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x77, + 0x61, 0x72, 0x64, 0x2c, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x1e, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x5f, 0x64, + 0x69, 0x72, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x12, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, + 0x28, 0x62, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, + 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x72, 0x1e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x5f, + 0x63, 0x68, 0x61, 0x72, 0x73, 0x1e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x5f, + 0x77, 0x6f, 0x72, 0x64, 0x73, 0x16, 0x75, 0x70, + 0x63, 0x61, 0x73, 0x65, 0x5f, 0x77, 0x6f, 0x72, + 0x64, 0x16, 0x74, 0x6f, 0x55, 0x70, 0x70, 0x65, + 0x72, 0x43, 0x61, 0x73, 0x65, 0x1a, 0x64, 0x6f, + 0x77, 0x6e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x77, + 0x6f, 0x72, 0x64, 0x16, 0x74, 0x6f, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x16, + 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x69, 0x6c, 0x6c, + 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x24, 0x62, 0x61, + 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6b, + 0x69, 0x6c, 0x6c, 0x5f, 0x6c, 0x69, 0x6e, 0x65, + 0x12, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x77, 0x6f, + 0x72, 0x64, 0x24, 0x62, 0x61, 0x63, 0x6b, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, + 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x08, 0x79, 0x61, + 0x6e, 0x6b, 0x14, 0x63, 0x6c, 0x69, 0x70, 0x5f, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x10, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x75, 0x6e, + 0x2a, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, + 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x08, 0x65, + 0x78, 0x69, 0x74, 0x3c, 0x0a, 0x28, 0x50, 0x72, + 0x65, 0x73, 0x73, 0x20, 0x43, 0x74, 0x72, 0x6c, + 0x2d, 0x43, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, + 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x69, 0x74, + 0x29, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x65, 0x74, + 0x20, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x5f, 0x77, 0x6f, 0x72, + 0x64, 0x24, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x08, 0x6c, 0x69, 0x6e, + 0x65, 0x06, 0x70, 0x6f, 0x73, 0x06, 0x6f, 0x62, + 0x6a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x02, 0x63, + 0x02, 0x67, 0x1c, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x6e, 0x75, 0x6d, 0x63, 0x61, 0x6c, + 0x63, 0x14, 0x68, 0x61, 0x73, 0x5f, 0x6a, 0x73, + 0x63, 0x61, 0x6c, 0x63, 0x14, 0x68, 0x61, 0x73, + 0x5f, 0x62, 0x69, 0x67, 0x6e, 0x75, 0x6d, 0x0c, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x0c, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x73, 0x08, 0x70, 0x72, + 0x65, 0x63, 0x0e, 0x65, 0x78, 0x70, 0x42, 0x69, + 0x74, 0x73, 0x0e, 0x6c, 0x6f, 0x67, 0x32, 0x5f, + 0x31, 0x30, 0x0c, 0x70, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x0c, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x08, 0x70, 0x6c, 0x65, 0x6e, 0x06, 0x70, 0x73, + 0x31, 0x06, 0x70, 0x73, 0x32, 0x08, 0x75, 0x74, + 0x66, 0x38, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x16, 0x73, 0x68, 0x6f, + 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, + 0x12, 0x65, 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x0a, 0x6d, 0x65, 0x78, 0x70, 0x72, + 0x0a, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6d, 0x64, 0x1e, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x10, + 0x74, 0x68, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x6e, + 0x14, 0x75, 0x74, 0x66, 0x38, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x10, 0x75, 0x74, 0x66, 0x38, + 0x5f, 0x76, 0x61, 0x6c, 0x0e, 0x74, 0x65, 0x72, + 0x6d, 0x5f, 0x66, 0x64, 0x1a, 0x74, 0x65, 0x72, + 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x62, + 0x75, 0x66, 0x14, 0x74, 0x65, 0x72, 0x6d, 0x5f, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x1a, 0x74, 0x65, + 0x72, 0x6d, 0x5f, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x5f, 0x78, 0x1e, 0x67, 0x65, 0x74, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x14, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x0c, + 0x64, 0x75, 0x70, 0x73, 0x74, 0x72, 0x1a, 0x72, + 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x73, 0x1c, 0x72, 0x65, 0x61, + 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x16, 0x72, 0x65, 0x61, 0x64, + 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x62, 0x1c, + 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x16, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x63, 0x68, + 0x61, 0x72, 0x14, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x10, 0x68, 0x65, + 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x65, + 0x76, 0x61, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x24, 0x62, 0x69, 0x67, 0x66, 0x6c, 0x6f, + 0x61, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x69, 0x67, + 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x0a, 0x70, 0x72, + 0x69, 0x6e, 0x74, 0x22, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x08, 0x68, + 0x65, 0x6c, 0x70, 0x1c, 0x65, 0x76, 0x61, 0x6c, + 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x12, 0x63, 0x6d, 0x64, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x24, 0x63, 0x6d, 0x64, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x26, + 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, + 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, + 0x63, 0x6d, 0x64, 0x14, 0x68, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x5f, 0x63, 0x6d, 0x64, 0x16, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, + 0x6a, 0x73, 0x2a, 0x20, 0x7e, 0x21, 0x25, 0x5e, + 0x26, 0x2a, 0x28, 0x2d, 0x2b, 0x3d, 0x7b, 0x5b, + 0x7c, 0x3a, 0x3b, 0x2c, 0x3c, 0x3e, 0x3f, 0x2f, + 0x0e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x66, + 0x02, 0x2e, 0x02, 0x27, 0x02, 0x22, 0x02, 0x5d, + 0x02, 0x7d, 0x02, 0x2f, 0x10, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x73, 0x0a, 0x69, 0x73, + 0x4e, 0x61, 0x4e, 0x26, 0x67, 0x65, 0x74, 0x4f, + 0x77, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x14, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x57, 0x69, + 0x74, 0x68, 0x08, 0x73, 0x6f, 0x72, 0x74, 0x06, + 0x74, 0x61, 0x62, 0x06, 0x63, 0x74, 0x78, 0x0c, + 0x73, 0x79, 0x6d, 0x63, 0x6d, 0x70, 0x02, 0x28, + 0x02, 0x29, 0x06, 0x6d, 0x61, 0x78, 0x0a, 0x66, + 0x6c, 0x6f, 0x6f, 0x72, 0x08, 0x63, 0x65, 0x69, + 0x6c, 0x0c, 0x70, 0x61, 0x64, 0x45, 0x6e, 0x64, + 0x02, 0x20, 0x0a, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x1a, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x64, + 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x02, 0x1b, + 0x02, 0x5b, 0x02, 0x4f, 0x02, 0x3b, 0x04, 0x2d, + 0x30, 0x02, 0x2d, 0x04, 0x30, 0x78, 0x08, 0x6d, + 0x61, 0x74, 0x68, 0x12, 0x42, 0x69, 0x67, 0x46, + 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x10, 0x62, 0x69, + 0x67, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x02, 0x6c, + 0x02, 0x70, 0x02, 0x65, 0x04, 0x2e, 0x30, 0x02, + 0x6e, 0x12, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, + 0x72, 0x65, 0x63, 0x14, 0x5b, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x6c, 0x61, 0x72, 0x5d, 0x0e, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x06, 0x4d, + 0x6f, 0x64, 0x14, 0x50, 0x6f, 0x6c, 0x79, 0x6e, + 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x0e, 0x50, 0x6f, + 0x6c, 0x79, 0x4d, 0x6f, 0x64, 0x20, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0c, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x0e, 0x69, 0x73, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x04, 0x5b, 0x20, + 0x04, 0x2c, 0x20, 0x0e, 0x3c, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x3e, 0x06, 0x2e, 0x2e, 0x2e, 0x04, + 0x20, 0x5d, 0x14, 0x5f, 0x5f, 0x67, 0x65, 0x74, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x08, 0x6b, 0x65, + 0x79, 0x73, 0x04, 0x7b, 0x20, 0x04, 0x3a, 0x20, + 0x04, 0x20, 0x7d, 0x06, 0x70, 0x6f, 0x70, 0x0e, + 0x5f, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x08, + 0x2e, 0x2e, 0x2e, 0x22, 0x0c, 0x62, 0x69, 0x67, + 0x69, 0x6e, 0x74, 0x14, 0x62, 0x69, 0x67, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x02, 0x6d, + 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x02, 0x5c, 0x02, 0x68, 0x02, 0x3f, + 0x08, 0x6c, 0x6f, 0x61, 0x64, 0x08, 0x74, 0x72, + 0x69, 0x6d, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x66, 0x06, 0x2e, + 0x6a, 0x73, 0x14, 0x6c, 0x6f, 0x61, 0x64, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x02, 0x78, 0x02, + 0x64, 0x02, 0x74, 0x26, 0x42, 0x69, 0x67, 0x46, + 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x72, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x10, + 0x20, 0x62, 0x69, 0x74, 0x73, 0x20, 0x28, 0x7e, + 0x30, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, + 0x29, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x3d, 0x0c, 0x20, 0x62, 0x69, 0x74, 0x73, 0x0a, + 0x06, 0x66, 0x31, 0x36, 0x06, 0x66, 0x33, 0x32, + 0x06, 0x66, 0x36, 0x34, 0x08, 0x66, 0x31, 0x32, + 0x38, 0x10, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, + 0x6e, 0x74, 0x16, 0x42, 0x69, 0x67, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x76, 0x14, 0x65, + 0x78, 0x70, 0x42, 0x69, 0x74, 0x73, 0x4d, 0x61, + 0x78, 0x0e, 0x70, 0x72, 0x65, 0x63, 0x4d, 0x69, + 0x6e, 0x0e, 0x70, 0x72, 0x65, 0x63, 0x4d, 0x61, + 0x78, 0x24, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x0a, 0x14, 0x65, 0x78, 0x70, + 0x42, 0x69, 0x74, 0x73, 0x4d, 0x69, 0x6e, 0x2c, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, + 0x65, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x20, 0x62, 0x69, 0x74, 0x73, 0x0a, 0x0c, 0x64, + 0x69, 0x67, 0x69, 0x74, 0x73, 0x08, 0x6d, 0x6f, + 0x64, 0x65, 0x1a, 0x52, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x3d, + 0x1a, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x0a, 0x0a, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x0c, 0x1b, 0x5b, 0x48, + 0x1b, 0x5b, 0x4a, 0x02, 0x71, 0x1a, 0x61, 0x6c, + 0x67, 0x65, 0x62, 0x72, 0x61, 0x69, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x26, 0x55, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x20, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x3a, 0x20, 0x06, + 0x64, 0x65, 0x63, 0x06, 0x68, 0x65, 0x78, 0x06, + 0x6e, 0x75, 0x6d, 0x06, 0x61, 0x6c, 0x67, 0x2c, + 0x5c, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x68, 0x65, 0x6c, 0x70, 0x0a, 0x16, 0x5c, + 0x78, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x36, 0x68, 0x65, 0x78, 0x61, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x0a, 0x16, 0x5c, + 0x64, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x2e, 0x64, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x0a, 0x16, 0x5c, 0x74, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2c, 0x74, + 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x20, 0x74, 0x69, + 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x0a, 0x3e, 0x5c, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x61, 0x6c, 0x0a, 0x16, 0x5c, 0x61, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x1e, 0x61, 0x6c, 0x67, 0x65, 0x62, 0x72, + 0x61, 0x69, 0x63, 0x20, 0x6d, 0x6f, 0x64, 0x65, + 0x0a, 0x16, 0x5c, 0x6e, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x1a, 0x6e, 0x75, + 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6d, 0x6f, + 0x64, 0x65, 0x0a, 0x66, 0x5c, 0x70, 0x20, 0x5b, + 0x6d, 0x20, 0x5b, 0x65, 0x5d, 0x5d, 0x20, 0x20, + 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x42, 0x69, 0x67, 0x46, 0x6c, 0x6f, 0x61, 0x74, + 0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x27, 0x6d, + 0x27, 0x20, 0x62, 0x69, 0x74, 0x73, 0x0a, 0x84, + 0x01, 0x5c, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, + 0x20, 0x6e, 0x20, 0x20, 0x20, 0x73, 0x65, 0x74, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x42, 0x69, 0x67, + 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x72, + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, + 0x74, 0x6f, 0x20, 0x27, 0x63, 0x65, 0x69, 0x6c, + 0x28, 0x6e, 0x2a, 0x6c, 0x6f, 0x67, 0x32, 0x28, + 0x31, 0x30, 0x29, 0x29, 0x27, 0x20, 0x62, 0x69, + 0x74, 0x73, 0x0a, 0x68, 0x5c, 0x6d, 0x6f, 0x64, + 0x65, 0x20, 0x5b, 0x73, 0x74, 0x64, 0x7c, 0x6d, + 0x61, 0x74, 0x68, 0x5d, 0x20, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x28, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x3d, 0x20, + 0x04, 0x29, 0x0a, 0x22, 0x5c, 0x71, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x78, 0x69, 0x74, 0x0a, 0x06, 0x73, 0x65, + 0x6c, 0x26, 0x22, 0x75, 0x73, 0x65, 0x20, 0x6d, + 0x61, 0x74, 0x68, 0x22, 0x3b, 0x20, 0x76, 0x6f, + 0x69, 0x64, 0x20, 0x30, 0x3b, 0x0e, 0x67, 0x65, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x14, 0x65, 0x76, + 0x61, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x22, 0x62, 0x61, 0x63, 0x6b, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x5f, 0x62, 0x61, 0x72, 0x72, 0x69, + 0x65, 0x72, 0x0e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, + 0x6c, 0x65, 0x06, 0x6c, 0x6f, 0x67, 0x0e, 0x54, + 0x68, 0x72, 0x6f, 0x77, 0x3a, 0x20, 0x3a, 0x51, + 0x4a, 0x53, 0x43, 0x61, 0x6c, 0x63, 0x20, 0x2d, + 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x22, 0x5c, + 0x68, 0x22, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, + 0x65, 0x6c, 0x70, 0x0a, 0x3a, 0x51, 0x75, 0x69, + 0x63, 0x6b, 0x4a, 0x53, 0x20, 0x2d, 0x20, 0x54, + 0x79, 0x70, 0x65, 0x20, 0x22, 0x5c, 0x68, 0x22, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x65, 0x6c, + 0x70, 0x0a, 0x08, 0x20, 0x20, 0x20, 0x20, 0x0e, + 0x73, 0x65, 0x74, 0x50, 0x72, 0x65, 0x63, 0x08, + 0x62, 0x69, 0x6e, 0x64, 0x04, 0x67, 0x63, 0x02, + 0x7c, 0x6a, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x7c, + 0x63, 0x61, 0x73, 0x65, 0x7c, 0x63, 0x61, 0x74, + 0x63, 0x68, 0x7c, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x65, 0x7c, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x67, 0x65, 0x72, 0x7c, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x7c, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x7c, 0x64, 0x6f, 0x7c, 0x5e, + 0x65, 0x6c, 0x73, 0x65, 0x7c, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x6c, 0x79, 0x7c, 0x66, 0x6f, 0x72, + 0x7c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x7c, 0x69, 0x66, 0x7c, 0x69, 0x6e, 0x7c, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x6f, 0x66, 0x7c, 0x6e, 0x65, 0x77, 0x7c, 0x5e, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x7c, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x7c, 0x74, 0x68, + 0x69, 0x73, 0x7c, 0x74, 0x68, 0x72, 0x6f, 0x77, + 0x7c, 0x74, 0x72, 0x79, 0x7c, 0x74, 0x79, 0x70, + 0x65, 0x6f, 0x66, 0x7c, 0x77, 0x68, 0x69, 0x6c, + 0x65, 0x7c, 0x77, 0x69, 0x74, 0x68, 0x7c, 0x5a, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x7c, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x7c, 0x65, 0x6e, 0x75, 0x6d, + 0x7c, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x7c, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x7c, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x73, 0x7c, 0x73, + 0x75, 0x70, 0x65, 0x72, 0x7c, 0x66, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x7c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x7c, 0x6c, 0x65, 0x74, 0x7c, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x7c, 0x70, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x7c, 0x70, + 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x7c, 0x28, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x7c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x7c, + 0x79, 0x69, 0x65, 0x6c, 0x64, 0x7c, 0x4e, 0x75, + 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, + 0x7c, 0x6e, 0x75, 0x6c, 0x6c, 0x7c, 0x74, 0x72, + 0x75, 0x65, 0x7c, 0x66, 0x61, 0x6c, 0x73, 0x65, + 0x7c, 0x49, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, + 0x79, 0x7c, 0x4e, 0x61, 0x4e, 0x7c, 0x1e, 0x65, + 0x76, 0x61, 0x6c, 0x7c, 0x61, 0x72, 0x67, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x7c, 0x0c, 0x61, + 0x77, 0x61, 0x69, 0x74, 0x7c, 0x7a, 0x7c, 0x74, + 0x68, 0x69, 0x73, 0x7c, 0x73, 0x75, 0x70, 0x65, + 0x72, 0x7c, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x64, 0x7c, 0x6e, 0x75, 0x6c, 0x6c, + 0x7c, 0x74, 0x72, 0x75, 0x65, 0x7c, 0x66, 0x61, + 0x6c, 0x73, 0x65, 0x7c, 0x49, 0x6e, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x79, 0x7c, 0x4e, 0x61, 0x4e, + 0x7c, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x7c, 0x14, 0x7c, 0x76, 0x6f, 0x69, + 0x64, 0x7c, 0x76, 0x61, 0x72, 0x7c, 0x02, 0x2b, + 0x02, 0x60, 0x02, 0x7b, 0x14, 0x70, 0x75, 0x73, + 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x14, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x70, 0x6f, 0x70, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x26, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x0a, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x02, 0x69, + 0x06, 0x73, 0x74, 0x72, 0x24, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x73, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x16, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x18, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, + 0x0f, 0x9c, 0x03, 0x02, 0x9e, 0x03, 0xa0, 0x03, + 0x00, 0x00, 0x02, 0x00, 0xf8, 0x01, 0x00, 0x01, + 0xf8, 0x01, 0x01, 0x0e, 0x00, 0x02, 0x03, 0xa0, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01, 0x09, + 0x00, 0x9e, 0x03, 0x00, 0x0d, 0xa0, 0x03, 0x01, + 0x0d, 0xbf, 0x00, 0x38, 0x89, 0x00, 0x00, 0x00, + 0xee, 0x29, 0x0e, 0x43, 0x02, 0x03, 0x00, 0x01, + 0x77, 0x01, 0x02, 0x02, 0x48, 0xf7, 0x09, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0xbf, 0x00, + 0xc2, 0x2a, 0xbf, 0x01, 0xc2, 0x2b, 0xbf, 0x02, + 0xc2, 0x2c, 0xbf, 0x03, 0xc2, 0x2d, 0xbf, 0x04, + 0xc2, 0x2e, 0xbf, 0x05, 0xc2, 0x2f, 0xbf, 0x06, + 0xc2, 0x30, 0xbf, 0x07, 0xc2, 0x31, 0xbf, 0x08, + 0xc2, 0x32, 0xbf, 0x09, 0xc2, 0x33, 0xbf, 0x0a, + 0xc2, 0x34, 0xbf, 0x0b, 0xc2, 0x35, 0xbf, 0x0c, + 0xc2, 0x36, 0xbf, 0x0d, 0xc2, 0x37, 0xbf, 0x0e, + 0xc2, 0x38, 0xbf, 0x0f, 0xc2, 0x39, 0xbf, 0x10, + 0xc2, 0x3a, 0xbf, 0x11, 0xc2, 0x3b, 0xbf, 0x12, + 0xc2, 0x3c, 0xbf, 0x13, 0xc2, 0x3d, 0xbf, 0x14, + 0xc2, 0x3e, 0xbf, 0x15, 0xc2, 0x3f, 0xbf, 0x16, + 0xc2, 0x40, 0xbf, 0x17, 0xc2, 0x41, 0xbf, 0x18, + 0xc2, 0x42, 0xbf, 0x19, 0xc2, 0x43, 0xbf, 0x1a, + 0xc2, 0x44, 0xbf, 0x1b, 0xc2, 0x45, 0xbf, 0x1c, + 0xc2, 0x46, 0xbf, 0x1d, 0xc2, 0x47, 0xbf, 0x1e, + 0xc2, 0x48, 0xbf, 0x1f, 0xc2, 0x49, 0xbf, 0x20, + 0xc2, 0x4a, 0xbf, 0x21, 0xc2, 0x4b, 0xbf, 0x22, + 0xc2, 0x4c, 0xbf, 0x23, 0xc2, 0x4d, 0xbf, 0x24, + 0xc2, 0x4e, 0xbf, 0x25, 0xc2, 0x4f, 0xbf, 0x26, + 0xc2, 0x50, 0xbf, 0x27, 0xc2, 0x51, 0xbf, 0x28, + 0xc2, 0x52, 0xbf, 0x29, 0xc2, 0x53, 0xbf, 0x2a, + 0xc2, 0x54, 0xbf, 0x2b, 0xc2, 0x55, 0xbf, 0x2c, + 0xc2, 0x56, 0xbf, 0x2d, 0xc2, 0x57, 0xbf, 0x2e, + 0xc2, 0x58, 0xbf, 0x2f, 0xc2, 0x59, 0xbf, 0x30, + 0xc2, 0x5a, 0xbf, 0x31, 0xc2, 0x5b, 0xbf, 0x32, + 0xc2, 0x5c, 0xbf, 0x33, 0xc2, 0x5d, 0xbf, 0x34, + 0xc2, 0x5e, 0xbf, 0x35, 0xc2, 0x60, 0xbf, 0x36, + 0xc2, 0x64, 0xbf, 0x37, 0xc2, 0x65, 0xbf, 0x38, + 0xc2, 0x66, 0xbf, 0x39, 0xc2, 0x67, 0xbf, 0x3a, + 0xc2, 0x6a, 0xbf, 0x3b, 0xc2, 0x6b, 0xbf, 0x3c, + 0xc2, 0x6c, 0xbf, 0x3d, 0xc2, 0x6d, 0xbf, 0x3e, + 0xc2, 0x6e, 0xbf, 0x3f, 0xc2, 0x6f, 0xbf, 0x41, + 0xc2, 0x70, 0xbf, 0x42, 0xc2, 0x71, 0xbf, 0x43, + 0xc2, 0x72, 0xbf, 0x44, 0xc2, 0x73, 0xbf, 0x45, + 0xc2, 0x74, 0xbf, 0x46, 0xc2, 0x75, 0xbf, 0x47, + 0xc2, 0x76, 0xd0, 0x65, 0x01, 0x00, 0x43, 0xd0, + 0x00, 0x00, 0x00, 0xd0, 0x65, 0x00, 0x00, 0x43, + 0xcf, 0x00, 0x00, 0x00, 0xd0, 0x41, 0x8b, 0x00, + 0x00, 0x00, 0xc8, 0xd0, 0x41, 0x8f, 0x00, 0x00, + 0x00, 0xc9, 0xd0, 0x41, 0x8c, 0x00, 0x00, 0x00, + 0xca, 0xd0, 0x41, 0x95, 0x00, 0x00, 0x00, 0xcb, + 0xd0, 0x41, 0x93, 0x00, 0x00, 0x00, 0xc2, 0x04, + 0xd0, 0x41, 0xd1, 0x00, 0x00, 0x00, 0xc2, 0x05, + 0xd0, 0x41, 0xd2, 0x00, 0x00, 0x00, 0xc2, 0x06, + 0x65, 0x01, 0x00, 0x41, 0xd3, 0x00, 0x00, 0x00, + 0xf3, 0xc2, 0x07, 0x37, 0xd4, 0x00, 0x00, 0x00, + 0xf4, 0xc2, 0x08, 0x37, 0xd5, 0x00, 0x00, 0x00, + 0xf4, 0xc2, 0x09, 0x0b, 0x04, 0xd6, 0x00, 0x00, + 0x00, 0x4c, 0xd7, 0x00, 0x00, 0x00, 0x04, 0xd8, + 0x00, 0x00, 0x00, 0x4c, 0xd9, 0x00, 0x00, 0x00, + 0x04, 0xda, 0x00, 0x00, 0x00, 0x4c, 0xdb, 0x00, + 0x00, 0x00, 0x04, 0xdc, 0x00, 0x00, 0x00, 0x4c, + 0xdd, 0x00, 0x00, 0x00, 0x04, 0xde, 0x00, 0x00, + 0x00, 0x4c, 0xdf, 0x00, 0x00, 0x00, 0x04, 0xe0, + 0x00, 0x00, 0x00, 0x4c, 0xe1, 0x00, 0x00, 0x00, + 0x04, 0xe2, 0x00, 0x00, 0x00, 0x4c, 0xe3, 0x00, + 0x00, 0x00, 0x04, 0xe4, 0x00, 0x00, 0x00, 0x4c, + 0xe5, 0x00, 0x00, 0x00, 0x04, 0xe6, 0x00, 0x00, + 0x00, 0x4c, 0xe7, 0x00, 0x00, 0x00, 0x04, 0xe8, + 0x00, 0x00, 0x00, 0x4c, 0xe9, 0x00, 0x00, 0x00, + 0x04, 0xe8, 0x00, 0x00, 0x00, 0x4c, 0xea, 0x00, + 0x00, 0x00, 0x04, 0xeb, 0x00, 0x00, 0x00, 0x4c, + 0xec, 0x00, 0x00, 0x00, 0x04, 0xed, 0x00, 0x00, + 0x00, 0x4c, 0xee, 0x00, 0x00, 0x00, 0x04, 0xef, + 0x00, 0x00, 0x00, 0x4c, 0xf0, 0x00, 0x00, 0x00, + 0x04, 0xf1, 0x00, 0x00, 0x00, 0x4c, 0xf2, 0x00, + 0x00, 0x00, 0x04, 0xf3, 0x00, 0x00, 0x00, 0x4c, + 0xf4, 0x00, 0x00, 0x00, 0x04, 0xf5, 0x00, 0x00, + 0x00, 0x4c, 0xf6, 0x00, 0x00, 0x00, 0x04, 0xf7, + 0x00, 0x00, 0x00, 0x4c, 0xf8, 0x00, 0x00, 0x00, + 0xc2, 0x0a, 0xc1, 0x07, 0xe9, 0x7e, 0x0b, 0x04, + 0xd9, 0x00, 0x00, 0x00, 0x4c, 0x16, 0x00, 0x00, + 0x00, 0x04, 0xe7, 0x00, 0x00, 0x00, 0x4c, 0xf9, + 0x00, 0x00, 0x00, 0x04, 0xdd, 0x00, 0x00, 0x00, + 0x4c, 0x48, 0x00, 0x00, 0x00, 0x04, 0xe5, 0x00, + 0x00, 0x00, 0x4c, 0xfa, 0x00, 0x00, 0x00, 0x04, + 0xdd, 0x00, 0x00, 0x00, 0x4c, 0x46, 0x00, 0x00, + 0x00, 0x04, 0xe1, 0x00, 0x00, 0x00, 0x4c, 0xfb, + 0x00, 0x00, 0x00, 0x04, 0xe9, 0x00, 0x00, 0x00, + 0x4c, 0x1b, 0x00, 0x00, 0x00, 0x04, 0xf4, 0x00, + 0x00, 0x00, 0x4c, 0xfc, 0x00, 0x00, 0x00, 0x04, + 0xdf, 0x00, 0x00, 0x00, 0x4c, 0xfd, 0x00, 0x00, + 0x00, 0x04, 0xec, 0x00, 0x00, 0x00, 0x4c, 0xfe, + 0x00, 0x00, 0x00, 0x04, 0xd9, 0x00, 0x00, 0x00, + 0x4c, 0xff, 0x00, 0x00, 0x00, 0x04, 0xec, 0x00, + 0x00, 0x00, 0x4c, 0x00, 0x01, 0x00, 0x00, 0xc2, + 0x0b, 0xeb, 0x7c, 0x0b, 0x04, 0xee, 0x00, 0x00, + 0x00, 0x4c, 0x16, 0x00, 0x00, 0x00, 0x04, 0xe7, + 0x00, 0x00, 0x00, 0x4c, 0xf9, 0x00, 0x00, 0x00, + 0x04, 0xf6, 0x00, 0x00, 0x00, 0x4c, 0x48, 0x00, + 0x00, 0x00, 0x04, 0xe5, 0x00, 0x00, 0x00, 0x4c, + 0xfa, 0x00, 0x00, 0x00, 0x04, 0xdd, 0x00, 0x00, + 0x00, 0x4c, 0x46, 0x00, 0x00, 0x00, 0x04, 0xf8, + 0x00, 0x00, 0x00, 0x4c, 0xfb, 0x00, 0x00, 0x00, + 0x04, 0xf0, 0x00, 0x00, 0x00, 0x4c, 0x1b, 0x00, + 0x00, 0x00, 0x04, 0xf4, 0x00, 0x00, 0x00, 0x4c, + 0xfc, 0x00, 0x00, 0x00, 0x04, 0xee, 0x00, 0x00, + 0x00, 0x4c, 0xfd, 0x00, 0x00, 0x00, 0x04, 0xdb, + 0x00, 0x00, 0x00, 0x4c, 0xfe, 0x00, 0x00, 0x00, + 0x04, 0xf8, 0x00, 0x00, 0x00, 0x4c, 0xff, 0x00, + 0x00, 0x00, 0x04, 0xec, 0x00, 0x00, 0x00, 0x4c, + 0x00, 0x01, 0x00, 0x00, 0xc2, 0x0b, 0x26, 0x00, + 0x00, 0xc2, 0x0c, 0xc0, 0xc2, 0x0d, 0xc0, 0xc2, + 0x11, 0xc0, 0xc2, 0x12, 0xb4, 0xc2, 0x13, 0xc1, + 0x07, 0xe9, 0x0a, 0x04, 0x01, 0x01, 0x00, 0x00, + 0xc2, 0x14, 0xeb, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x00, 0xc2, 0x14, 0x04, 0x03, 0x01, 0x00, 0x00, + 0xc2, 0x15, 0x0a, 0xc2, 0x16, 0x09, 0xc2, 0x17, + 0x0a, 0xc2, 0x18, 0xb4, 0xc2, 0x19, 0xc0, 0xc2, + 0x1a, 0xb4, 0xc2, 0x1b, 0xc0, 0xc2, 0x1c, 0xb4, + 0xc2, 0x1d, 0xc0, 0xc2, 0x1e, 0xb4, 0xc2, 0x1f, + 0x09, 0xc2, 0x23, 0xb4, 0xc2, 0x24, 0xb4, 0xc2, + 0x25, 0xb4, 0xc2, 0x29, 0x0b, 0xc1, 0x3c, 0x4c, + 0x04, 0x01, 0x00, 0x00, 0xc1, 0x3f, 0x4c, 0x05, + 0x01, 0x00, 0x00, 0xc1, 0x59, 0x4c, 0x06, 0x01, + 0x00, 0x00, 0xc1, 0x4d, 0x4c, 0x07, 0x01, 0x00, + 0x00, 0xc1, 0x3d, 0x4c, 0x08, 0x01, 0x00, 0x00, + 0xc1, 0x3e, 0x4c, 0x09, 0x01, 0x00, 0x00, 0xc1, + 0x3a, 0x4c, 0x0a, 0x01, 0x00, 0x00, 0xc1, 0x4e, + 0x4c, 0x0b, 0x01, 0x00, 0x00, 0xc1, 0x5e, 0x4c, + 0x0c, 0x01, 0x00, 0x00, 0xc1, 0x44, 0x4c, 0x0d, + 0x01, 0x00, 0x00, 0xc1, 0x54, 0x4c, 0x0e, 0x01, + 0x00, 0x00, 0xc1, 0x44, 0x4c, 0x0f, 0x01, 0x00, + 0x00, 0xc1, 0x47, 0x4c, 0x10, 0x01, 0x00, 0x00, + 0xc1, 0x46, 0x4c, 0x11, 0x01, 0x00, 0x00, 0xc1, + 0x39, 0x4c, 0x12, 0x01, 0x00, 0x00, 0xc1, 0x3b, + 0x4c, 0x13, 0x01, 0x00, 0x00, 0xc1, 0x3b, 0x4c, + 0x14, 0x01, 0x00, 0x00, 0xc1, 0x4f, 0x4c, 0x15, + 0x01, 0x00, 0x00, 0xc1, 0x5a, 0x4c, 0x16, 0x01, + 0x00, 0x00, 0xc1, 0x58, 0x4c, 0x17, 0x01, 0x00, + 0x00, 0xc1, 0x46, 0x4c, 0x18, 0x01, 0x00, 0x00, + 0xc1, 0x47, 0x4c, 0x19, 0x01, 0x00, 0x00, 0xc1, + 0x3e, 0x4c, 0x1a, 0x01, 0x00, 0x00, 0xc1, 0x3f, + 0x4c, 0x1b, 0x01, 0x00, 0x00, 0xc1, 0x42, 0x4c, + 0x1c, 0x01, 0x00, 0x00, 0xc1, 0x43, 0x4c, 0x1d, + 0x01, 0x00, 0x00, 0xc1, 0x42, 0x4c, 0x1e, 0x01, + 0x00, 0x00, 0xc1, 0x43, 0x4c, 0x1f, 0x01, 0x00, + 0x00, 0xc1, 0x3c, 0x4c, 0x20, 0x01, 0x00, 0x00, + 0xc1, 0x4c, 0x4c, 0x21, 0x01, 0x00, 0x00, 0xc1, + 0x3d, 0x4c, 0x22, 0x01, 0x00, 0x00, 0xc1, 0x49, + 0x4c, 0x23, 0x01, 0x00, 0x00, 0xc1, 0x4a, 0x4c, + 0x24, 0x01, 0x00, 0x00, 0xc1, 0x46, 0x4c, 0x25, + 0x01, 0x00, 0x00, 0xc1, 0x47, 0x4c, 0x26, 0x01, + 0x00, 0x00, 0xc1, 0x3e, 0x4c, 0x27, 0x01, 0x00, + 0x00, 0xc1, 0x3f, 0x4c, 0x28, 0x01, 0x00, 0x00, + 0xc1, 0x3d, 0x4c, 0x29, 0x01, 0x00, 0x00, 0xc1, + 0x3c, 0x4c, 0x2a, 0x01, 0x00, 0x00, 0xc1, 0x57, + 0x4c, 0x2b, 0x01, 0x00, 0x00, 0xc1, 0x43, 0x4c, + 0x2c, 0x01, 0x00, 0x00, 0xc1, 0x56, 0x4c, 0x2d, + 0x01, 0x00, 0x00, 0xc1, 0x42, 0x4c, 0x2e, 0x01, + 0x00, 0x00, 0xc1, 0x55, 0x4c, 0x2f, 0x01, 0x00, + 0x00, 0xc1, 0x52, 0x4c, 0x30, 0x01, 0x00, 0x00, + 0xc1, 0x50, 0x4c, 0x31, 0x01, 0x00, 0x00, 0xc1, + 0x51, 0x4c, 0x32, 0x01, 0x00, 0x00, 0xc1, 0x4e, + 0x4c, 0x33, 0x01, 0x00, 0x00, 0xc2, 0x5f, 0x09, + 0xc2, 0x68, 0x04, 0xcf, 0x00, 0x00, 0x00, 0xc2, + 0x69, 0xc1, 0x07, 0xe9, 0x09, 0xd0, 0xbf, 0x40, + 0x43, 0x34, 0x01, 0x00, 0x00, 0xc1, 0x2a, 0xed, + 0x0e, 0xc1, 0x72, 0xed, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0xea, 0x04, 0x00, 0x01, 0x00, 0x04, 0x07, + 0x00, 0x8b, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, + 0x00, 0x0c, 0x00, 0x28, 0x01, 0x00, 0x01, 0x0c, + 0x00, 0x2b, 0x01, 0x00, 0x27, 0x01, 0x00, 0x2c, + 0x01, 0x65, 0x01, 0x00, 0x41, 0x0d, 0x00, 0x00, + 0x00, 0x42, 0x36, 0x01, 0x00, 0x00, 0x24, 0x00, + 0x00, 0xe0, 0xbc, 0x50, 0xe2, 0x65, 0x03, 0x00, + 0x42, 0x37, 0x01, 0x00, 0x00, 0xdc, 0x24, 0x01, + 0x00, 0xe9, 0x35, 0x65, 0x03, 0x00, 0x41, 0x38, + 0x01, 0x00, 0x00, 0xe9, 0x14, 0x65, 0x03, 0x00, + 0x42, 0x38, 0x01, 0x00, 0x00, 0xdc, 0x24, 0x01, + 0x00, 0xcc, 0xe9, 0x05, 0xc4, 0xb4, 0x47, 0xe2, + 0x65, 0x03, 0x00, 0x41, 0x39, 0x01, 0x00, 0x00, + 0xe9, 0x0e, 0x65, 0x03, 0x00, 0x42, 0x39, 0x01, + 0x00, 0x00, 0xdc, 0x24, 0x01, 0x00, 0x0e, 0x65, + 0x03, 0x00, 0x42, 0x3a, 0x01, 0x00, 0x00, 0x65, + 0x03, 0x00, 0x41, 0x3b, 0x01, 0x00, 0x00, 0x5e, + 0x04, 0x00, 0x24, 0x02, 0x00, 0x0e, 0x38, 0x9e, + 0x00, 0x00, 0x00, 0x11, 0xbc, 0x40, 0x21, 0x01, + 0x00, 0x5f, 0x05, 0x00, 0x65, 0x03, 0x00, 0x42, + 0x3c, 0x01, 0x00, 0x00, 0xdc, 0x5e, 0x06, 0x00, + 0x24, 0x02, 0x00, 0x29, 0x0e, 0x43, 0x02, 0x03, + 0xfa, 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, + 0x04, 0x00, 0xfc, 0x04, 0x2d, 0x01, 0xdc, 0xb7, + 0xee, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xfe, 0x04, + 0x00, 0x02, 0x00, 0x06, 0x04, 0x00, 0x28, 0x00, + 0x00, 0x01, 0x0c, 0x00, 0x26, 0x01, 0x00, 0x27, + 0x01, 0x00, 0x2d, 0x01, 0x65, 0x00, 0x00, 0x42, + 0x40, 0x01, 0x00, 0x00, 0xdd, 0xde, 0x41, 0x41, + 0x01, 0x00, 0x00, 0xb4, 0xde, 0xe8, 0x24, 0x04, + 0x00, 0xc8, 0xb4, 0xc9, 0xc5, 0xc4, 0xa4, 0xe9, + 0x0b, 0xdf, 0xde, 0xc5, 0x47, 0xee, 0x0e, 0x94, + 0x01, 0xeb, 0xf2, 0x29, 0x0e, 0x43, 0x02, 0x03, + 0xfc, 0x04, 0x01, 0x00, 0x01, 0x04, 0x04, 0x00, + 0x5f, 0x00, 0x00, 0x16, 0x01, 0x00, 0x66, 0x01, + 0x00, 0x24, 0x01, 0x00, 0x25, 0x01, 0xdc, 0x97, + 0xe9, 0x06, 0xdd, 0xd0, 0xee, 0x0e, 0x29, 0xde, + 0xb4, 0xad, 0xe9, 0x24, 0xd0, 0xbd, 0x80, 0x00, + 0xa7, 0xe9, 0x1d, 0xd0, 0xbd, 0xc0, 0x00, 0xa4, + 0xe9, 0x16, 0xdf, 0xba, 0xa1, 0xd0, 0xbc, 0x3f, + 0xae, 0xb0, 0xe3, 0xde, 0x8f, 0xe6, 0xb4, 0xac, + 0xe9, 0x33, 0xdd, 0xdf, 0xee, 0x0e, 0x29, 0xd0, + 0xbd, 0xc0, 0x00, 0xa7, 0xe9, 0x21, 0xd0, 0xbd, + 0xf8, 0x00, 0xa4, 0xe9, 0x1a, 0xb5, 0xd0, 0xbd, + 0xe0, 0x00, 0xa7, 0x9e, 0xd0, 0xbd, 0xf0, 0x00, + 0xa7, 0x9e, 0xe2, 0xd0, 0xb5, 0xba, 0xde, 0x9f, + 0xa1, 0xb5, 0x9f, 0xae, 0xe3, 0x29, 0xb4, 0xe2, + 0xdd, 0xd0, 0xee, 0x0e, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0x84, 0x05, 0x01, 0x00, 0x01, 0x02, 0x00, + 0x00, 0x35, 0x00, 0xd0, 0x98, 0x04, 0x48, 0x00, + 0x00, 0x00, 0xac, 0x11, 0xe9, 0x2a, 0x0e, 0xd0, + 0x04, 0x43, 0x01, 0x00, 0x00, 0xa7, 0x11, 0xe9, + 0x09, 0x0e, 0xd0, 0x04, 0x44, 0x01, 0x00, 0x00, + 0xa5, 0x11, 0xea, 0x14, 0x0e, 0xd0, 0x04, 0x45, + 0x01, 0x00, 0x00, 0xa7, 0x11, 0xe9, 0x09, 0x0e, + 0xd0, 0x04, 0x46, 0x01, 0x00, 0x00, 0xa5, 0x28, + 0x0e, 0x43, 0x02, 0x03, 0x8e, 0x05, 0x01, 0x00, + 0x01, 0x02, 0x00, 0x02, 0x19, 0x00, 0xd0, 0x98, + 0x04, 0x48, 0x00, 0x00, 0x00, 0xac, 0x11, 0xe9, + 0x0e, 0x0e, 0xd0, 0xbe, 0x00, 0xa7, 0x11, 0xe9, + 0x06, 0x0e, 0xd0, 0xbe, 0x01, 0xa5, 0x28, 0x07, + 0x02, 0x30, 0x07, 0x02, 0x39, 0x0e, 0x43, 0x02, + 0x03, 0x90, 0x05, 0x01, 0x00, 0x01, 0x02, 0x02, + 0x00, 0x2d, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x2f, + 0x01, 0xd0, 0x98, 0x04, 0x48, 0x00, 0x00, 0x00, + 0xac, 0x11, 0xe9, 0x22, 0x0e, 0xdc, 0xd0, 0xee, + 0x11, 0xea, 0x1b, 0x0e, 0xdd, 0xd0, 0xee, 0x11, + 0xea, 0x14, 0x0e, 0xd0, 0x04, 0x49, 0x01, 0x00, + 0x00, 0xaa, 0x11, 0xea, 0x09, 0x0e, 0xd0, 0x04, + 0x4a, 0x01, 0x00, 0x00, 0xaa, 0x28, 0x0e, 0x43, + 0x02, 0x03, 0x96, 0x05, 0x01, 0x04, 0x01, 0x03, + 0x00, 0x00, 0x32, 0x00, 0xd0, 0xe8, 0xcb, 0xb4, + 0xc8, 0xb4, 0xca, 0xc6, 0xc7, 0xa4, 0xe9, 0x25, + 0xd0, 0x42, 0x4c, 0x01, 0x00, 0x00, 0xc6, 0x24, + 0x01, 0x00, 0xcd, 0x01, 0x00, 0xdc, 0x00, 0x00, + 0xa4, 0x11, 0xea, 0x09, 0x0e, 0xc5, 0x01, 0x00, + 0xe0, 0x00, 0x00, 0xa7, 0xe9, 0x03, 0x94, 0x00, + 0x94, 0x02, 0xeb, 0xd8, 0xc4, 0x28, 0x0e, 0x43, + 0x02, 0x03, 0x9a, 0x05, 0x01, 0x01, 0x01, 0x03, + 0x00, 0x00, 0x29, 0x00, 0xd0, 0x98, 0x04, 0x48, + 0x00, 0x00, 0x00, 0xad, 0xe9, 0x03, 0x09, 0x28, + 0xd0, 0x42, 0x4e, 0x01, 0x00, 0x00, 0xb4, 0x24, + 0x01, 0x00, 0xcc, 0x01, 0x00, 0xdc, 0x00, 0x00, + 0xa7, 0x11, 0xe9, 0x09, 0x0e, 0xc4, 0x01, 0x00, + 0xe0, 0x00, 0x00, 0xa4, 0x28, 0x0e, 0x43, 0x02, + 0x03, 0x9e, 0x05, 0x02, 0x00, 0x02, 0x03, 0x00, + 0x00, 0x23, 0x00, 0xd0, 0xd1, 0x9e, 0x11, 0x04, + 0x50, 0x01, 0x00, 0x00, 0xac, 0xea, 0x13, 0x11, + 0x04, 0x51, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0a, + 0x11, 0x04, 0x52, 0x01, 0x00, 0x00, 0xac, 0xe9, + 0x03, 0x0a, 0x28, 0x0e, 0x09, 0x28, 0x0e, 0x43, + 0x02, 0x03, 0xa6, 0x05, 0x03, 0x03, 0x03, 0x06, + 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0a, 0x01, 0x00, 0x0b, 0x01, 0xd1, 0xc9, 0xc5, + 0xd0, 0xe8, 0xa4, 0xe9, 0x5b, 0xd2, 0xc5, 0xcc, + 0x47, 0xca, 0xc5, 0x90, 0xcd, 0xd0, 0xe8, 0xa4, + 0xe9, 0x08, 0xd2, 0xc5, 0x47, 0xc6, 0xaa, 0xea, + 0xf2, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0xdd, 0xde, 0xc6, 0x47, 0x11, 0xea, 0x07, + 0x0e, 0x04, 0x16, 0x00, 0x00, 0x00, 0x47, 0x24, + 0x01, 0x00, 0x0e, 0x65, 0x00, 0x00, 0x42, 0x54, + 0x01, 0x00, 0x00, 0xd0, 0x42, 0x55, 0x01, 0x00, + 0x00, 0xc4, 0xc5, 0x24, 0x02, 0x00, 0x24, 0x01, + 0x00, 0x0e, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0xdd, 0x04, 0xd7, 0x00, 0x00, 0x00, + 0x47, 0x24, 0x01, 0x00, 0x0e, 0xeb, 0xa1, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0xac, 0x05, 0x02, 0x00, + 0x02, 0x05, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0c, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0x04, 0x57, 0x01, 0x00, 0x00, 0xd0, 0xb5, + 0xab, 0xe9, 0x04, 0xd0, 0xeb, 0x02, 0xc0, 0x9e, + 0xd1, 0x9e, 0x24, 0x01, 0x00, 0x29, 0x0e, 0x43, + 0x02, 0x03, 0xb0, 0x05, 0x01, 0x02, 0x01, 0x04, + 0x05, 0x00, 0xa1, 0x01, 0x00, 0x00, 0x29, 0x01, + 0x00, 0x28, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x04, + 0x01, 0x00, 0x35, 0x01, 0xd0, 0xb4, 0xa6, 0xe9, + 0x4d, 0xd0, 0xb4, 0xab, 0x69, 0x97, 0x00, 0x00, + 0x00, 0xdc, 0xdd, 0xb5, 0x9f, 0xaa, 0xe9, 0x19, + 0x65, 0x02, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0x04, 0x0d, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x0e, 0xb4, 0xe0, 0xd0, 0x8f, 0xd4, 0xeb, 0xda, + 0xdf, 0x42, 0x59, 0x01, 0x00, 0x00, 0xdd, 0xb5, + 0x9f, 0xdc, 0x9f, 0xd0, 0x24, 0x02, 0x00, 0xc9, + 0x5e, 0x04, 0x00, 0xc5, 0x04, 0x5a, 0x01, 0x00, + 0x00, 0xef, 0x0e, 0xd0, 0xc5, 0x9f, 0xd4, 0xdc, + 0xc5, 0x9e, 0xe0, 0xeb, 0xb5, 0xd0, 0x8d, 0xd4, + 0xd0, 0xb4, 0xab, 0xe9, 0x48, 0xdc, 0xb4, 0xaa, + 0xe9, 0x22, 0x5e, 0x04, 0x00, 0xb5, 0x04, 0x43, + 0x01, 0x00, 0x00, 0xef, 0x0e, 0x5e, 0x04, 0x00, + 0xdd, 0xb5, 0x9f, 0x04, 0x5a, 0x01, 0x00, 0x00, + 0xef, 0x0e, 0xd0, 0x8f, 0xd4, 0xdd, 0xb5, 0x9f, + 0xe0, 0xeb, 0xd6, 0xdf, 0x42, 0x59, 0x01, 0x00, + 0x00, 0xd0, 0xdc, 0x24, 0x02, 0x00, 0xc9, 0x5e, + 0x04, 0x00, 0xc5, 0x04, 0x5b, 0x01, 0x00, 0x00, + 0xef, 0x0e, 0xd0, 0xc5, 0x9f, 0xd4, 0xdc, 0xc5, + 0x9f, 0xe0, 0xeb, 0xb5, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0xb8, 0x05, 0x00, 0x05, 0x00, 0x06, 0x0d, + 0x00, 0x9c, 0x02, 0x00, 0x00, 0x1c, 0x01, 0x00, + 0x1e, 0x01, 0x00, 0x18, 0x01, 0x00, 0x1f, 0x01, + 0x00, 0x00, 0x0c, 0x00, 0x36, 0x01, 0x00, 0x31, + 0x01, 0x00, 0x1a, 0x01, 0x00, 0x76, 0x01, 0x00, + 0x34, 0x01, 0x00, 0x29, 0x01, 0x00, 0x28, 0x01, + 0x00, 0x1d, 0x01, 0xdc, 0xdd, 0xab, 0x69, 0xc6, + 0x00, 0x00, 0x00, 0xde, 0x97, 0xe9, 0x32, 0xdd, + 0x42, 0x55, 0x01, 0x00, 0x00, 0xb4, 0xdf, 0x24, + 0x02, 0x00, 0xdc, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xb4, 0xdf, 0x24, 0x02, 0x00, 0xaa, 0xe9, 0x19, + 0x65, 0x04, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0xdc, 0x42, 0x55, 0x01, 0x00, 0x00, 0xdf, 0x24, + 0x01, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xeb, 0x53, + 0x5e, 0x05, 0x00, 0x5e, 0x06, 0x00, 0xdd, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xb4, 0xdf, 0x24, 0x02, + 0x00, 0xee, 0x8d, 0xee, 0x0e, 0xde, 0xe9, 0x2e, + 0x5e, 0x07, 0x00, 0xe9, 0x0e, 0x5e, 0x07, 0x00, + 0x04, 0x0d, 0x01, 0x00, 0x00, 0x9e, 0xdc, 0x9e, + 0xeb, 0x02, 0xdc, 0xce, 0xe8, 0xdc, 0xe8, 0x9f, + 0xcb, 0x5e, 0x08, 0x00, 0xc6, 0xee, 0xc2, 0x04, + 0x5e, 0x09, 0x00, 0xc6, 0xc7, 0xc1, 0x04, 0xb6, + 0x47, 0xf0, 0x0e, 0xeb, 0x0e, 0x65, 0x04, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0xdc, 0x24, 0x01, + 0x00, 0x0e, 0x5e, 0x0a, 0x00, 0x5e, 0x06, 0x00, + 0xdc, 0xee, 0x9e, 0x5e, 0x0b, 0x00, 0x9d, 0x60, + 0x0a, 0x00, 0xb4, 0xaa, 0xe9, 0x12, 0x65, 0x04, + 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x5d, + 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x65, + 0x04, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, + 0x5e, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0xdc, 0xe1, 0xdc, 0xe8, 0xe3, 0x5e, 0x0c, 0x00, + 0xdf, 0xa6, 0xe9, 0x19, 0x5e, 0x05, 0x00, 0x5e, + 0x06, 0x00, 0xdc, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xdf, 0x5e, 0x0c, 0x00, 0x24, 0x02, 0x00, 0xee, + 0xee, 0x0e, 0xeb, 0x1f, 0x5e, 0x0c, 0x00, 0xdf, + 0xa4, 0xe9, 0x18, 0x5e, 0x05, 0x00, 0x5e, 0x06, + 0x00, 0xdc, 0x42, 0x55, 0x01, 0x00, 0x00, 0x5e, + 0x0c, 0x00, 0xdf, 0x24, 0x02, 0x00, 0xee, 0x8d, + 0xee, 0x0e, 0x5e, 0x0c, 0x00, 0xe3, 0x65, 0x04, + 0x00, 0x41, 0x5f, 0x01, 0x00, 0x00, 0x42, 0x60, + 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x29, 0x0e, + 0x43, 0x02, 0x03, 0xc2, 0x05, 0x01, 0x00, 0x01, + 0x04, 0x02, 0x00, 0x22, 0x00, 0x00, 0x1c, 0x01, + 0x00, 0x1d, 0x01, 0xd0, 0xe9, 0x1f, 0xdc, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xb4, 0xdd, 0x24, 0x02, + 0x00, 0xd0, 0x9e, 0xdc, 0x42, 0x55, 0x01, 0x00, + 0x00, 0xdd, 0x24, 0x01, 0x00, 0x9e, 0xe0, 0xdd, + 0xd0, 0xe8, 0x9e, 0xe1, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0xc4, 0x05, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x03, 0x00, 0xc6, 0x05, 0x23, 0x01, 0x0a, + 0xe0, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xc8, 0x05, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x07, 0x00, + 0xca, 0x05, 0x1c, 0x01, 0xcc, 0x05, 0x1d, 0x01, + 0xc0, 0xe0, 0xb4, 0xe1, 0xbc, 0xfe, 0x28, 0x0e, + 0x43, 0x02, 0x03, 0xce, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x0e, 0x43, + 0x02, 0x03, 0xd0, 0x05, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x03, 0x00, 0xcc, 0x05, 0x1d, 0x01, + 0xb4, 0xe0, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xd2, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x04, + 0x00, 0xcc, 0x05, 0x1d, 0x01, 0xca, 0x05, 0x1c, + 0x01, 0xdd, 0xe8, 0xe0, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0xd4, 0x05, 0x00, 0x00, 0x00, 0x04, 0x03, + 0x00, 0x1d, 0x00, 0xcc, 0x05, 0x1d, 0x01, 0xca, + 0x05, 0x1c, 0x01, 0x9a, 0x05, 0x32, 0x01, 0xdc, + 0xdd, 0xe8, 0xa4, 0xe9, 0x17, 0xdc, 0x90, 0xe0, + 0xde, 0xdd, 0x42, 0x6b, 0x01, 0x00, 0x00, 0xdc, + 0x24, 0x01, 0x00, 0xee, 0xe9, 0x06, 0xdc, 0x90, + 0xe0, 0xeb, 0xee, 0x29, 0x0e, 0x43, 0x02, 0x03, + 0xd8, 0x05, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, + 0x1c, 0x00, 0xcc, 0x05, 0x1d, 0x01, 0x9a, 0x05, + 0x32, 0x01, 0xca, 0x05, 0x1c, 0x01, 0xdc, 0xb4, + 0xa6, 0xe9, 0x17, 0xdc, 0x8f, 0xe0, 0xdd, 0xde, + 0x42, 0x6b, 0x01, 0x00, 0x00, 0xdc, 0x24, 0x01, + 0x00, 0xee, 0xe9, 0x06, 0xdc, 0x8f, 0xe0, 0xeb, + 0xee, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xda, 0x05, + 0x01, 0x00, 0x01, 0x04, 0x02, 0x00, 0x35, 0x00, + 0x00, 0x1c, 0x01, 0x00, 0x30, 0x01, 0xd0, 0xdc, + 0xe8, 0xa4, 0xe9, 0x15, 0xdd, 0xdc, 0x42, 0x6b, + 0x01, 0x00, 0x00, 0xd0, 0x24, 0x01, 0x00, 0xee, + 0x97, 0xe9, 0x06, 0xd0, 0x90, 0xd4, 0xeb, 0xe7, + 0xd0, 0xdc, 0xe8, 0xa4, 0xe9, 0x14, 0xdd, 0xdc, + 0x42, 0x6b, 0x01, 0x00, 0x00, 0xd0, 0x24, 0x01, + 0x00, 0xee, 0xe9, 0x06, 0xd0, 0x90, 0xd4, 0xeb, + 0xe8, 0xd0, 0x28, 0x0e, 0x43, 0x02, 0x03, 0xdc, + 0x05, 0x01, 0x00, 0x01, 0x05, 0x02, 0x00, 0x37, + 0x00, 0x00, 0x30, 0x01, 0x00, 0x1c, 0x01, 0xd0, + 0xb4, 0xa6, 0xe9, 0x17, 0xdc, 0xdd, 0x42, 0x6b, + 0x01, 0x00, 0x00, 0xd0, 0xb5, 0x9f, 0x24, 0x01, + 0x00, 0xee, 0x97, 0xe9, 0x06, 0xd0, 0x8f, 0xd4, + 0xeb, 0xe6, 0xd0, 0xb4, 0xa6, 0xe9, 0x16, 0xdc, + 0xdd, 0x42, 0x6b, 0x01, 0x00, 0x00, 0xd0, 0xb5, + 0x9f, 0x24, 0x01, 0x00, 0xee, 0xe9, 0x06, 0xd0, + 0x8f, 0xd4, 0xeb, 0xe7, 0xd0, 0x28, 0x0e, 0x43, + 0x02, 0x03, 0xde, 0x05, 0x00, 0x00, 0x00, 0x02, + 0x02, 0x00, 0x05, 0x00, 0xcc, 0x05, 0x1d, 0x01, + 0xda, 0x05, 0x40, 0x01, 0xdd, 0xdc, 0xee, 0xe0, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0xe0, 0x05, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x05, 0x00, 0xcc, + 0x05, 0x1d, 0x01, 0xdc, 0x05, 0x41, 0x01, 0xdd, + 0xdc, 0xee, 0xe0, 0x29, 0x0e, 0x43, 0x02, 0x03, + 0xe2, 0x05, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, + 0x17, 0x00, 0x9e, 0x03, 0x00, 0x0c, 0xe4, 0x05, + 0x45, 0x01, 0xca, 0x05, 0x1c, 0x01, 0x65, 0x00, + 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x0d, + 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdd, + 0xde, 0xee, 0x0e, 0xb3, 0x28, 0x0e, 0x43, 0x02, + 0x03, 0xe4, 0x05, 0x01, 0x00, 0x01, 0x03, 0x02, + 0x00, 0x12, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x20, + 0x01, 0xd0, 0xe9, 0x0c, 0xdc, 0x42, 0x73, 0x01, + 0x00, 0x00, 0xd0, 0x24, 0x01, 0x00, 0x0e, 0xdc, + 0xe8, 0xe1, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xe8, + 0x05, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x20, + 0x00, 0xea, 0x05, 0x20, 0x01, 0xec, 0x05, 0x0c, + 0x01, 0xca, 0x05, 0x1c, 0x01, 0xcc, 0x05, 0x1d, + 0x01, 0xdc, 0xb4, 0xa6, 0xe9, 0x1b, 0xdc, 0xdd, + 0xe8, 0xaa, 0xe9, 0x0c, 0xdd, 0x42, 0x73, 0x01, + 0x00, 0x00, 0xde, 0x24, 0x01, 0x00, 0x0e, 0xdc, + 0x8f, 0xe0, 0xdd, 0xdc, 0x47, 0xe6, 0xe8, 0xe3, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0xee, 0x05, 0x00, + 0x00, 0x00, 0x03, 0x04, 0x00, 0x12, 0x00, 0xea, + 0x05, 0x20, 0x01, 0xec, 0x05, 0x0c, 0x01, 0xca, + 0x05, 0x1c, 0x01, 0xcc, 0x05, 0x1d, 0x01, 0xdc, + 0xdd, 0xe8, 0xb5, 0x9f, 0xa4, 0xe9, 0x0a, 0xdc, + 0x90, 0xe0, 0xdd, 0xdc, 0x47, 0xe6, 0xe8, 0xe3, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0xf0, 0x05, 0x01, + 0x03, 0x01, 0x05, 0x04, 0x00, 0x3d, 0x00, 0x00, + 0x1d, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x20, 0x01, + 0x00, 0x1c, 0x01, 0xdc, 0xc8, 0xb5, 0xc9, 0xc5, + 0xdd, 0xe8, 0xa5, 0xe9, 0x33, 0xdd, 0xe8, 0xc5, + 0xd0, 0x9b, 0x9e, 0xde, 0x9e, 0xdd, 0xe8, 0x9d, + 0xca, 0xdd, 0xc6, 0x47, 0x42, 0x55, 0x01, 0x00, + 0x00, 0xb4, 0xc4, 0x24, 0x02, 0x00, 0xdf, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xb4, 0xc4, 0x24, 0x02, + 0x00, 0xaa, 0xe9, 0x08, 0xc6, 0xe2, 0xdd, 0xc6, + 0x47, 0xe3, 0x29, 0x94, 0x01, 0xeb, 0xc9, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0xf2, 0x05, 0x00, 0x00, + 0x00, 0x02, 0x01, 0x00, 0x05, 0x00, 0xf0, 0x05, + 0x48, 0x01, 0xdc, 0xb3, 0x23, 0x01, 0x00, 0x0e, + 0x43, 0x02, 0x03, 0xf4, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x00, 0x05, 0x00, 0xf0, 0x05, 0x48, + 0x01, 0xdc, 0xb5, 0x23, 0x01, 0x00, 0x0e, 0x43, + 0x02, 0x03, 0xf6, 0x05, 0x01, 0x02, 0x01, 0x04, + 0x05, 0x00, 0x66, 0x00, 0x00, 0x1d, 0x01, 0x00, + 0x32, 0x01, 0x00, 0x1c, 0x01, 0x00, 0x22, 0x01, + 0x00, 0x53, 0x01, 0xdc, 0xc8, 0xd0, 0xb4, 0xa4, + 0xe9, 0x15, 0x93, 0x00, 0xdd, 0xde, 0x42, 0x6b, + 0x01, 0x00, 0x00, 0xc4, 0x24, 0x01, 0x00, 0xee, + 0xe9, 0x05, 0x93, 0x00, 0xeb, 0xef, 0xc4, 0xb5, + 0x9e, 0xc9, 0xdd, 0xde, 0x42, 0x6b, 0x01, 0x00, + 0x00, 0xc5, 0x24, 0x01, 0x00, 0xee, 0xe9, 0x05, + 0x94, 0x01, 0xeb, 0xef, 0xc4, 0xb4, 0xa7, 0xe9, + 0x30, 0xc4, 0xde, 0xe8, 0xa4, 0xe9, 0x2a, 0xdf, + 0x5e, 0x04, 0x00, 0xac, 0xe9, 0x0a, 0x5e, 0x04, + 0x00, 0xc4, 0xc5, 0xd0, 0xf0, 0x0e, 0x29, 0xde, + 0x42, 0x55, 0x01, 0x00, 0x00, 0xb4, 0xc4, 0x24, + 0x02, 0x00, 0xde, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xc5, 0x24, 0x01, 0x00, 0x9e, 0xe2, 0xc4, 0xe0, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0xf8, 0x05, 0x00, + 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, 0xf6, + 0x05, 0x4b, 0x01, 0xdc, 0xb5, 0xee, 0x29, 0x0e, + 0x43, 0x02, 0x03, 0xfa, 0x05, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x1f, 0x00, 0xca, 0x05, 0x1c, + 0x01, 0x9e, 0x03, 0x00, 0x0c, 0xf6, 0x05, 0x4b, + 0x01, 0xdc, 0xe8, 0xb4, 0xaa, 0xe9, 0x15, 0x65, + 0x01, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, + 0x0d, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0xbc, 0xfd, 0x28, 0xde, 0xb5, 0xee, 0x0e, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0xfc, 0x05, 0x00, 0x00, + 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, 0xf6, 0x05, + 0x4b, 0x01, 0xdc, 0xb3, 0xee, 0x29, 0x0e, 0x43, + 0x02, 0x03, 0xfe, 0x05, 0x00, 0x01, 0x00, 0x06, + 0x02, 0x00, 0x51, 0x00, 0x00, 0x1d, 0x01, 0x00, + 0x1c, 0x01, 0xdc, 0xc8, 0xdd, 0xe8, 0xb5, 0xa6, + 0xe9, 0x49, 0xc4, 0xb4, 0xa6, 0xe9, 0x44, 0xc4, + 0xdd, 0xe8, 0xaa, 0xe9, 0x03, 0x93, 0x00, 0xdd, + 0x42, 0x55, 0x01, 0x00, 0x00, 0xb4, 0xc4, 0xb5, + 0x9f, 0x24, 0x02, 0x00, 0xdd, 0x42, 0x55, 0x01, + 0x00, 0x00, 0xc4, 0xc4, 0xb5, 0x9e, 0x24, 0x02, + 0x00, 0x9e, 0xdd, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xc4, 0xb5, 0x9f, 0xc4, 0x24, 0x02, 0x00, 0x9e, + 0xdd, 0x42, 0x55, 0x01, 0x00, 0x00, 0xc4, 0xb5, + 0x9e, 0x24, 0x01, 0x00, 0x9e, 0xe1, 0xc4, 0xb5, + 0x9e, 0xe0, 0x29, 0x0e, 0x43, 0x02, 0x03, 0x80, + 0x06, 0x00, 0x04, 0x00, 0x05, 0x04, 0x00, 0x57, + 0x00, 0x00, 0x41, 0x01, 0x00, 0x1d, 0x01, 0x00, + 0x40, 0x01, 0x00, 0x1c, 0x01, 0xdc, 0xdd, 0xee, + 0xc8, 0xde, 0xc4, 0xee, 0xc9, 0xde, 0xdd, 0xee, + 0xca, 0xdc, 0xc6, 0xee, 0xcb, 0xc4, 0xc5, 0xa4, + 0xe9, 0x42, 0xc5, 0xdd, 0xa5, 0xe9, 0x3d, 0xdd, + 0xc7, 0xa5, 0xe9, 0x38, 0xc7, 0xc6, 0xa4, 0xe9, + 0x33, 0xdf, 0x42, 0x55, 0x01, 0x00, 0x00, 0xb4, + 0xc4, 0x24, 0x02, 0x00, 0xdf, 0x42, 0x55, 0x01, + 0x00, 0x00, 0xc7, 0xc6, 0x24, 0x02, 0x00, 0x9e, + 0xdf, 0x42, 0x55, 0x01, 0x00, 0x00, 0xc5, 0xc7, + 0x24, 0x02, 0x00, 0x9e, 0xdf, 0x42, 0x55, 0x01, + 0x00, 0x00, 0xc4, 0xc5, 0x24, 0x02, 0x00, 0x9e, + 0xe3, 0xc6, 0xe1, 0x29, 0x0e, 0x43, 0x02, 0x03, + 0x82, 0x06, 0x00, 0x01, 0x00, 0x05, 0x03, 0x00, + 0x30, 0x00, 0x00, 0x40, 0x01, 0x00, 0x1d, 0x01, + 0x00, 0x1c, 0x01, 0xdc, 0xdd, 0xee, 0xc8, 0xde, + 0x42, 0x55, 0x01, 0x00, 0x00, 0xb4, 0xdd, 0x24, + 0x02, 0x00, 0xde, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xdd, 0xc4, 0x24, 0x02, 0x00, 0x42, 0x82, 0x01, + 0x00, 0x00, 0x24, 0x00, 0x00, 0x9e, 0xde, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xc4, 0x24, 0x01, 0x00, + 0x9e, 0xe2, 0x29, 0x0e, 0x43, 0x02, 0x03, 0x86, + 0x06, 0x00, 0x01, 0x00, 0x05, 0x03, 0x00, 0x30, + 0x00, 0x00, 0x40, 0x01, 0x00, 0x1d, 0x01, 0x00, + 0x1c, 0x01, 0xdc, 0xdd, 0xee, 0xc8, 0xde, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xb4, 0xdd, 0x24, 0x02, + 0x00, 0xde, 0x42, 0x55, 0x01, 0x00, 0x00, 0xdd, + 0xc4, 0x24, 0x02, 0x00, 0x42, 0x84, 0x01, 0x00, + 0x00, 0x24, 0x00, 0x00, 0x9e, 0xde, 0x42, 0x55, + 0x01, 0x00, 0x00, 0xc4, 0x24, 0x01, 0x00, 0x9e, + 0xe2, 0x29, 0x0e, 0x43, 0x02, 0x03, 0x8a, 0x06, + 0x03, 0x01, 0x03, 0x04, 0x06, 0x00, 0x5e, 0x00, + 0x00, 0x1c, 0x01, 0x00, 0x22, 0x01, 0x00, 0x53, + 0x01, 0x00, 0x0d, 0x01, 0x00, 0x1d, 0x01, 0x00, + 0x21, 0x01, 0xdc, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xd0, 0xd1, 0x24, 0x02, 0x00, 0xc8, 0xdd, 0xde, + 0xad, 0xe9, 0x05, 0xc4, 0xe3, 0xeb, 0x10, 0xd2, + 0xb4, 0xa4, 0xe9, 0x07, 0xc4, 0xdf, 0x9e, 0xe3, + 0xeb, 0x05, 0xdf, 0xc4, 0x9e, 0xe3, 0xdc, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xb4, 0xd0, 0x24, 0x02, + 0x00, 0xdc, 0x42, 0x55, 0x01, 0x00, 0x00, 0xd1, + 0x24, 0x01, 0x00, 0x9e, 0xe0, 0x5e, 0x04, 0x00, + 0xd1, 0xa6, 0xe9, 0x0d, 0x5e, 0x04, 0x00, 0xd1, + 0xd0, 0x9f, 0x9f, 0x5f, 0x04, 0x00, 0xeb, 0x0c, + 0x5e, 0x04, 0x00, 0xd0, 0xa6, 0xe9, 0x05, 0xd0, + 0x5f, 0x04, 0x00, 0xde, 0x5f, 0x05, 0x00, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0x8c, 0x06, 0x00, 0x00, + 0x00, 0x04, 0x03, 0x00, 0x07, 0x00, 0x8a, 0x06, + 0x53, 0x01, 0xcc, 0x05, 0x1d, 0x01, 0xca, 0x05, + 0x1c, 0x01, 0xdc, 0xdd, 0xde, 0xe8, 0xb5, 0xf0, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0x8e, 0x06, 0x00, + 0x00, 0x00, 0x04, 0x02, 0x00, 0x06, 0x00, 0x8a, + 0x06, 0x53, 0x01, 0xcc, 0x05, 0x1d, 0x01, 0xdc, + 0xb4, 0xdd, 0xb3, 0xf0, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0x90, 0x06, 0x00, 0x00, 0x00, 0x04, 0x03, + 0x00, 0x08, 0x00, 0x8a, 0x06, 0x53, 0x01, 0xcc, + 0x05, 0x1d, 0x01, 0xda, 0x05, 0x40, 0x01, 0xdc, + 0xdd, 0xde, 0xdd, 0xee, 0xb5, 0xf0, 0x29, 0x0e, + 0x43, 0x02, 0x03, 0x92, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x00, 0x08, 0x00, 0x8a, 0x06, 0x53, + 0x01, 0xdc, 0x05, 0x41, 0x01, 0xcc, 0x05, 0x1d, + 0x01, 0xdc, 0xdd, 0xde, 0xee, 0xde, 0xb3, 0xf0, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0x94, 0x06, 0x00, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x04, 0x00, 0xc2, + 0x05, 0x38, 0x01, 0x96, 0x06, 0x0d, 0x01, 0xdc, + 0xdd, 0xee, 0x29, 0x0e, 0x43, 0x02, 0x03, 0x98, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x39, + 0x00, 0x9a, 0x06, 0x22, 0x01, 0x98, 0x06, 0x59, + 0x01, 0x9e, 0x03, 0x00, 0x0c, 0x9c, 0x06, 0x64, + 0x01, 0xdc, 0xdd, 0xac, 0xe9, 0x20, 0x65, 0x02, + 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x0d, + 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x65, + 0x02, 0x00, 0x42, 0x8f, 0x01, 0x00, 0x00, 0xb4, + 0x24, 0x01, 0x00, 0x0e, 0x29, 0x65, 0x02, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x90, 0x01, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdf, 0xed, + 0x0e, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xa2, 0x06, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x05, 0x00, + 0xca, 0x05, 0x1c, 0x01, 0xcc, 0x05, 0x1d, 0x01, + 0xc0, 0xe0, 0xb4, 0xe1, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0xa4, 0x06, 0x02, 0x01, 0x02, 0x04, 0x01, + 0x00, 0x1d, 0x00, 0x00, 0x30, 0x01, 0xc0, 0xc8, + 0xd1, 0xb4, 0xa6, 0xe9, 0x15, 0xdc, 0xd0, 0xd1, + 0xb5, 0x9f, 0x47, 0xee, 0xe9, 0x0c, 0xd1, 0x8f, + 0xd5, 0xd0, 0xd1, 0x47, 0xc4, 0x9e, 0xc8, 0xeb, + 0xe8, 0xc4, 0x28, 0x0e, 0x43, 0x02, 0x03, 0xa6, + 0x06, 0x02, 0x06, 0x02, 0x05, 0x7a, 0x02, 0x87, + 0x02, 0x08, 0xa8, 0x06, 0x00, 0x01, 0x00, 0xaa, + 0x06, 0x00, 0x01, 0x00, 0xac, 0x06, 0x00, 0x00, + 0x00, 0xae, 0x06, 0x00, 0x01, 0x00, 0xb0, 0x06, + 0x00, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, 0xe0, + 0x01, 0x00, 0x01, 0x00, 0x9a, 0x01, 0x00, 0x01, + 0x00, 0xb2, 0x06, 0x00, 0x03, 0x96, 0x02, 0x00, + 0x01, 0x9e, 0x02, 0x01, 0x01, 0x98, 0x02, 0x02, + 0x01, 0xaa, 0x02, 0x03, 0x01, 0xa6, 0x02, 0x04, + 0x01, 0xa2, 0x03, 0x05, 0x01, 0xa4, 0x03, 0x06, + 0x01, 0xb4, 0x06, 0x07, 0x01, 0xb6, 0x06, 0x08, + 0x01, 0xb8, 0x06, 0x09, 0x01, 0xba, 0x06, 0x0a, + 0x01, 0xbc, 0x06, 0x0b, 0x01, 0xec, 0x05, 0x0c, + 0x01, 0x96, 0x06, 0x0d, 0x01, 0xbe, 0x06, 0x0e, + 0x01, 0xc0, 0x06, 0x0f, 0x01, 0xc2, 0x06, 0x10, + 0x01, 0xc4, 0x06, 0x11, 0x01, 0xc6, 0x06, 0x12, + 0x01, 0xc8, 0x06, 0x13, 0x01, 0xca, 0x06, 0x14, + 0x01, 0xcc, 0x06, 0x15, 0x01, 0xce, 0x06, 0x16, + 0x01, 0xd0, 0x06, 0x17, 0x01, 0xd2, 0x06, 0x18, + 0x01, 0xd4, 0x06, 0x19, 0x01, 0xd6, 0x06, 0x1a, + 0x01, 0xd8, 0x06, 0x1b, 0x01, 0xca, 0x05, 0x1c, + 0x01, 0xcc, 0x05, 0x1d, 0x01, 0xda, 0x06, 0x1e, + 0x01, 0xdc, 0x06, 0x1f, 0x01, 0xea, 0x05, 0x20, + 0x01, 0xde, 0x06, 0x21, 0x01, 0x9a, 0x06, 0x22, + 0x01, 0xc6, 0x05, 0x23, 0x01, 0xe0, 0x06, 0x24, + 0x01, 0xe2, 0x06, 0x25, 0x01, 0xe4, 0x06, 0x26, + 0x01, 0xe6, 0x06, 0x27, 0x01, 0xe8, 0x06, 0x28, + 0x01, 0xea, 0x06, 0x29, 0x01, 0xea, 0x04, 0x2a, + 0x01, 0xfa, 0x04, 0x2b, 0x01, 0xfe, 0x04, 0x2c, + 0x01, 0xfc, 0x04, 0x2d, 0x01, 0x84, 0x05, 0x2e, + 0x01, 0x8e, 0x05, 0x2f, 0x01, 0x90, 0x05, 0x30, + 0x01, 0x96, 0x05, 0x31, 0x01, 0x9a, 0x05, 0x32, + 0x01, 0x9e, 0x05, 0x33, 0x01, 0xa6, 0x05, 0x34, + 0x01, 0xac, 0x05, 0x35, 0x01, 0xb0, 0x05, 0x36, + 0x01, 0xb8, 0x05, 0x37, 0x01, 0xc2, 0x05, 0x38, + 0x01, 0xc4, 0x05, 0x39, 0x01, 0xc8, 0x05, 0x3a, + 0x01, 0xce, 0x05, 0x3b, 0x01, 0xd0, 0x05, 0x3c, + 0x01, 0xd2, 0x05, 0x3d, 0x01, 0xd4, 0x05, 0x3e, + 0x01, 0xd8, 0x05, 0x3f, 0x01, 0xda, 0x05, 0x40, + 0x01, 0xdc, 0x05, 0x41, 0x01, 0xde, 0x05, 0x42, + 0x01, 0xe0, 0x05, 0x43, 0x01, 0xe2, 0x05, 0x44, + 0x01, 0xe4, 0x05, 0x45, 0x01, 0xe8, 0x05, 0x46, + 0x01, 0xee, 0x05, 0x47, 0x01, 0xf0, 0x05, 0x48, + 0x01, 0xf2, 0x05, 0x49, 0x01, 0xf4, 0x05, 0x4a, + 0x01, 0xf6, 0x05, 0x4b, 0x01, 0xf8, 0x05, 0x4c, + 0x01, 0xfa, 0x05, 0x4d, 0x01, 0xfc, 0x05, 0x4e, + 0x01, 0xfe, 0x05, 0x4f, 0x01, 0x80, 0x06, 0x50, + 0x01, 0x82, 0x06, 0x51, 0x01, 0x86, 0x06, 0x52, + 0x01, 0x8a, 0x06, 0x53, 0x01, 0x8c, 0x06, 0x54, + 0x01, 0x8e, 0x06, 0x55, 0x01, 0x90, 0x06, 0x56, + 0x01, 0x92, 0x06, 0x57, 0x01, 0x94, 0x06, 0x58, + 0x01, 0x98, 0x06, 0x59, 0x01, 0xa2, 0x06, 0x5a, + 0x01, 0xa4, 0x06, 0x5b, 0x01, 0xa6, 0x06, 0x5c, + 0x01, 0xec, 0x06, 0x5d, 0x01, 0xee, 0x06, 0x5e, + 0x01, 0xf0, 0x06, 0x5f, 0x01, 0xf2, 0x06, 0x60, + 0x01, 0xf4, 0x06, 0x61, 0x01, 0xf6, 0x06, 0x62, + 0x01, 0xf8, 0x06, 0x63, 0x01, 0x9c, 0x06, 0x64, + 0x01, 0xfa, 0x06, 0x65, 0x01, 0xfc, 0x06, 0x66, + 0x01, 0xfe, 0x06, 0x67, 0x01, 0x80, 0x07, 0x68, + 0x01, 0x82, 0x07, 0x69, 0x01, 0x84, 0x07, 0x6a, + 0x01, 0x86, 0x07, 0x6b, 0x01, 0x88, 0x07, 0x6c, + 0x01, 0x8a, 0x07, 0x6d, 0x01, 0x8c, 0x07, 0x6e, + 0x01, 0x8e, 0x07, 0x6f, 0x01, 0x90, 0x07, 0x70, + 0x01, 0x92, 0x07, 0x71, 0x01, 0x94, 0x07, 0x72, + 0x01, 0x96, 0x07, 0x73, 0x01, 0x98, 0x07, 0x74, + 0x01, 0x9a, 0x07, 0x75, 0x01, 0x9c, 0x07, 0x76, + 0x01, 0x9e, 0x03, 0x00, 0x0c, 0xa0, 0x03, 0x01, + 0x0c, 0x0c, 0x03, 0xc2, 0x04, 0x08, 0xcb, 0x0c, + 0x00, 0xc2, 0x05, 0xd1, 0xb4, 0xa5, 0x11, 0xea, + 0x16, 0x0e, 0x04, 0xcf, 0x01, 0x00, 0x00, 0x42, + 0xd0, 0x01, 0x00, 0x00, 0xd0, 0xd1, 0xb5, 0x9f, + 0x47, 0x24, 0x01, 0x00, 0xb4, 0xa7, 0xe9, 0x03, + 0xdc, 0x28, 0xd1, 0xb6, 0xa7, 0x69, 0xd9, 0x00, + 0x00, 0x00, 0xd0, 0xd1, 0xb5, 0x9f, 0x47, 0x04, + 0xd1, 0x01, 0x00, 0x00, 0xac, 0x69, 0xc9, 0x00, + 0x00, 0x00, 0xd1, 0x8f, 0xd5, 0x0b, 0xc8, 0xd0, + 0xd1, 0xb5, 0x9f, 0x47, 0xce, 0x11, 0x04, 0xd2, + 0x01, 0x00, 0x00, 0xac, 0xea, 0x0a, 0x11, 0x04, + 0xd3, 0x01, 0x00, 0x00, 0xac, 0xe9, 0x07, 0x04, + 0x45, 0x01, 0x00, 0x00, 0x28, 0x11, 0x04, 0xd4, + 0x01, 0x00, 0x00, 0xac, 0xe9, 0x05, 0x26, 0x00, + 0x00, 0x28, 0x11, 0x04, 0xd5, 0x01, 0x00, 0x00, + 0xac, 0xe9, 0x03, 0x0b, 0x28, 0x11, 0x04, 0xd6, + 0x01, 0x00, 0x00, 0xac, 0xe9, 0x07, 0xbe, 0x00, + 0xbe, 0x01, 0x33, 0x28, 0x5e, 0x31, 0x00, 0xc6, + 0xee, 0xe9, 0x73, 0x5e, 0x5c, 0x00, 0xd0, 0xd1, + 0xef, 0xc9, 0x04, 0x03, 0x00, 0x00, 0x00, 0x04, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x26, 0x04, + 0x00, 0x42, 0xd7, 0x01, 0x00, 0x00, 0xc5, 0x24, + 0x01, 0x00, 0x11, 0xea, 0x0b, 0x0e, 0x38, 0xd8, + 0x01, 0x00, 0x00, 0xc5, 0x8e, 0xee, 0x97, 0xe9, + 0x0d, 0x38, 0x3a, 0x00, 0x00, 0x00, 0xc5, 0x31, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x5e, 0x5d, 0x00, + 0xd0, 0xd1, 0xc5, 0xe8, 0x9f, 0xef, 0xcc, 0xf2, + 0x11, 0xea, 0x04, 0x0e, 0xc4, 0xf1, 0xe9, 0x03, + 0xc4, 0x28, 0xc4, 0xdc, 0xac, 0xe9, 0x13, 0xc4, + 0xc5, 0x47, 0xf1, 0xe9, 0x0d, 0x38, 0x3a, 0x00, + 0x00, 0x00, 0xc5, 0x31, 0x01, 0x00, 0x00, 0x00, + 0x28, 0xc4, 0xc5, 0x47, 0x28, 0x0b, 0x28, 0x29, + 0x07, 0x02, 0x20, 0x07, 0x34, 0x00, 0x01, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, + 0x00, 0x04, 0x07, 0xf5, 0xff, 0xff, 0xff, 0x0b, + 0x00, 0x01, 0x20, 0x00, 0x0c, 0x00, 0x0a, 0x0e, + 0x43, 0x02, 0x03, 0xec, 0x06, 0x02, 0x0a, 0x02, + 0x04, 0x03, 0x01, 0xe3, 0x01, 0x00, 0x00, 0x5b, + 0x01, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x01, 0xdc, + 0xd0, 0xd1, 0xef, 0xc8, 0xdd, 0xd0, 0xd1, 0xc4, + 0xe8, 0x9f, 0xef, 0xca, 0x26, 0x00, 0x00, 0xcb, + 0xb4, 0xc2, 0x04, 0xc6, 0xc9, 0xc1, 0x04, 0xbc, + 0x0a, 0xa4, 0xe9, 0x67, 0xc5, 0xf2, 0xea, 0x63, + 0xc5, 0x06, 0xad, 0xe9, 0x5e, 0xde, 0x42, 0xd9, + 0x01, 0x00, 0x00, 0xc5, 0x24, 0x01, 0x00, 0xc2, + 0x07, 0xb4, 0xc2, 0x05, 0xc1, 0x05, 0xc1, 0x07, + 0xe8, 0xa4, 0xe9, 0x38, 0xc1, 0x07, 0xc1, 0x05, + 0x47, 0xc3, 0x08, 0x98, 0x04, 0x48, 0x00, 0x00, + 0x00, 0xaa, 0xe9, 0x24, 0xc0, 0xc1, 0x08, 0x8e, + 0x9e, 0xc1, 0x08, 0xab, 0xe9, 0x1a, 0xc1, 0x08, + 0x42, 0xda, 0x01, 0x00, 0x00, 0xc4, 0x24, 0x01, + 0x00, 0xe9, 0x0d, 0xc7, 0x42, 0x73, 0x01, 0x00, + 0x00, 0xc1, 0x08, 0x24, 0x01, 0x00, 0x0e, 0x94, + 0x05, 0xeb, 0xc2, 0xde, 0x42, 0x5e, 0x00, 0x00, + 0x00, 0xc5, 0x24, 0x01, 0x00, 0xc9, 0x94, 0x04, + 0xeb, 0x94, 0xc7, 0xe8, 0xb5, 0xa6, 0xe9, 0x46, + 0xbf, 0x00, 0xc2, 0x09, 0xbf, 0x00, 0x0e, 0xc7, + 0x42, 0xdb, 0x01, 0x00, 0x00, 0x62, 0x09, 0x00, + 0x24, 0x01, 0x00, 0x0e, 0xb5, 0xc3, 0x05, 0xc2, + 0x04, 0xc1, 0x04, 0xc7, 0xe8, 0xa4, 0xe9, 0x1e, + 0xc7, 0xc1, 0x04, 0x47, 0xc7, 0xc1, 0x04, 0xb5, + 0x9f, 0x47, 0xab, 0xe9, 0x0d, 0xc7, 0xc1, 0x05, + 0x92, 0xc2, 0x05, 0x71, 0xc7, 0xc1, 0x04, 0x47, + 0x49, 0x94, 0x04, 0xeb, 0xdd, 0xc7, 0xc1, 0x05, + 0x43, 0x30, 0x00, 0x00, 0x00, 0x0b, 0xc7, 0x4c, + 0xdc, 0x01, 0x00, 0x00, 0xc4, 0xe8, 0x4c, 0x95, + 0x01, 0x00, 0x00, 0xc6, 0x4c, 0xdd, 0x01, 0x00, + 0x00, 0x28, 0x0e, 0x43, 0x02, 0x03, 0xbc, 0x07, + 0x02, 0x00, 0x02, 0x03, 0x00, 0x00, 0x34, 0x00, + 0xd0, 0xb4, 0x47, 0xd1, 0xb4, 0x47, 0xab, 0xe9, + 0x1b, 0xd0, 0xb4, 0x47, 0x04, 0x49, 0x01, 0x00, + 0x00, 0xaa, 0xe9, 0x03, 0xb5, 0x28, 0xd1, 0xb4, + 0x47, 0x04, 0x49, 0x01, 0x00, 0x00, 0xaa, 0xe9, + 0x03, 0xb3, 0x28, 0xd0, 0xd1, 0xa4, 0xe9, 0x03, + 0xb3, 0x28, 0xd0, 0xd1, 0xa6, 0xe9, 0x04, 0xb5, + 0x8e, 0x28, 0xb4, 0x28, 0x0e, 0x43, 0x02, 0x03, + 0xee, 0x06, 0x00, 0x0d, 0x00, 0x07, 0x0a, 0x00, + 0x8f, 0x03, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x1c, + 0x01, 0x00, 0x1d, 0x01, 0x00, 0x38, 0x01, 0x00, + 0x22, 0x01, 0x00, 0x5e, 0x01, 0x00, 0x04, 0x01, + 0x00, 0x28, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x64, + 0x01, 0xdc, 0xdd, 0xde, 0xef, 0xcd, 0x41, 0xdc, + 0x01, 0x00, 0x00, 0xcc, 0xe8, 0xb4, 0xac, 0xe9, + 0x02, 0x29, 0xc4, 0xb4, 0x47, 0xce, 0xe8, 0xc2, + 0x05, 0xb5, 0xcb, 0xc7, 0xc4, 0xe8, 0xa4, 0xe9, + 0x2a, 0xc4, 0xc7, 0x47, 0xc2, 0x06, 0xb4, 0xc2, + 0x04, 0xc1, 0x04, 0xc1, 0x05, 0xa4, 0xe9, 0x17, + 0xc1, 0x06, 0xc1, 0x04, 0x47, 0xc6, 0xc1, 0x04, + 0x47, 0xad, 0xe9, 0x07, 0xc1, 0x04, 0xc2, 0x05, + 0xeb, 0x05, 0x94, 0x04, 0xeb, 0xe4, 0x94, 0x03, + 0xeb, 0xd2, 0xc5, 0x41, 0x95, 0x01, 0x00, 0x00, + 0xcb, 0xc7, 0xc1, 0x05, 0xa4, 0xe9, 0x0b, 0xdf, + 0xc6, 0xc7, 0x47, 0xee, 0x0e, 0x94, 0x03, 0xeb, + 0xf1, 0x5e, 0x04, 0x00, 0x5e, 0x05, 0x00, 0xac, + 0xe9, 0x42, 0xc4, 0xe8, 0xb5, 0xaa, 0xe9, 0x3c, + 0xc5, 0x41, 0xdd, 0x01, 0x00, 0x00, 0xc4, 0xb4, + 0x47, 0x47, 0xc3, 0x0c, 0xf4, 0xe9, 0x1a, 0xdf, + 0x04, 0xdf, 0x01, 0x00, 0x00, 0xee, 0x0e, 0xc1, + 0x0c, 0xe8, 0xb4, 0xaa, 0xe9, 0x1e, 0xdf, 0x04, + 0xe0, 0x01, 0x00, 0x00, 0xee, 0x0e, 0xeb, 0x14, + 0xc1, 0x0c, 0x98, 0x04, 0x49, 0x00, 0x00, 0x00, + 0xaa, 0xe9, 0x09, 0xdf, 0x04, 0xd1, 0x01, 0x00, + 0x00, 0xee, 0x0e, 0x5e, 0x04, 0x00, 0x5e, 0x05, + 0x00, 0xac, 0x69, 0xdc, 0x00, 0x00, 0x00, 0xc4, + 0xe8, 0xb6, 0xa7, 0x69, 0xd3, 0x00, 0x00, 0x00, + 0xb4, 0xc2, 0x07, 0xb4, 0xcb, 0xc7, 0xc4, 0xe8, + 0xa4, 0xe9, 0x18, 0x5e, 0x06, 0x00, 0x42, 0xe1, + 0x01, 0x00, 0x00, 0xc1, 0x07, 0xc4, 0xc7, 0x47, + 0xe8, 0x24, 0x02, 0x00, 0xc2, 0x07, 0x94, 0x03, + 0xeb, 0xe4, 0xb6, 0x95, 0x07, 0x5e, 0x06, 0x00, + 0x42, 0xe1, 0x01, 0x00, 0x00, 0xb5, 0x5e, 0x06, + 0x00, 0x42, 0xe2, 0x01, 0x00, 0x00, 0x5e, 0x07, + 0x00, 0xb5, 0x9e, 0xc1, 0x07, 0x9c, 0x24, 0x01, + 0x00, 0x24, 0x02, 0x00, 0xc2, 0x09, 0x5e, 0x06, + 0x00, 0x42, 0xe3, 0x01, 0x00, 0x00, 0xc4, 0xe8, + 0xc1, 0x09, 0x9c, 0x24, 0x01, 0x00, 0xc2, 0x0b, + 0x65, 0x08, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0x04, 0x0d, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x0e, 0xb4, 0xc2, 0x0a, 0xc1, 0x0a, 0xc1, 0x0b, + 0xa4, 0xe9, 0x58, 0xb4, 0xc2, 0x08, 0xc1, 0x08, + 0xc1, 0x09, 0xa4, 0xe9, 0x39, 0xc1, 0x08, 0xc1, + 0x0b, 0x9b, 0xc1, 0x0a, 0x9e, 0xcf, 0xc4, 0xe8, + 0xa7, 0xea, 0x2b, 0xc4, 0xc7, 0x47, 0xca, 0xc1, + 0x08, 0xc1, 0x09, 0xb5, 0x9f, 0xab, 0xe9, 0x0d, + 0xc6, 0x42, 0xe4, 0x01, 0x00, 0x00, 0xc1, 0x07, + 0x24, 0x01, 0x00, 0xca, 0x65, 0x08, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, + 0x0e, 0x94, 0x08, 0xeb, 0xc2, 0x65, 0x08, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x0d, 0x01, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x94, 0x0a, + 0xeb, 0xa3, 0x5e, 0x09, 0x00, 0xed, 0x0e, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0xf2, 0x06, 0x02, 0x01, + 0x02, 0x02, 0x00, 0x00, 0x10, 0x00, 0xc0, 0xc8, + 0xd1, 0x91, 0xd5, 0xb4, 0xa6, 0xe9, 0x06, 0xd0, + 0x95, 0x00, 0xeb, 0xf5, 0xc4, 0x28, 0x0e, 0x43, + 0x02, 0x03, 0x9c, 0x06, 0x00, 0x00, 0x00, 0x03, + 0x07, 0x00, 0x1e, 0x00, 0x9e, 0x03, 0x00, 0x0c, + 0xc6, 0x06, 0x12, 0x01, 0xea, 0x06, 0x29, 0x01, + 0x96, 0x05, 0x31, 0x01, 0xe8, 0x06, 0x28, 0x01, + 0xda, 0x06, 0x1e, 0x01, 0xdc, 0x06, 0x1f, 0x01, + 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0xdd, 0x24, 0x01, 0x00, 0x0e, 0xdf, 0xdd, 0xee, + 0x5e, 0x04, 0x00, 0x9d, 0xe2, 0xc0, 0x5f, 0x05, + 0x00, 0xb4, 0x5f, 0x06, 0x00, 0x29, 0x0e, 0x43, + 0x02, 0x03, 0xfa, 0x06, 0x02, 0x01, 0x02, 0x06, + 0x12, 0x01, 0xb0, 0x01, 0x00, 0x00, 0x1c, 0x01, + 0x00, 0x1d, 0x01, 0x00, 0x20, 0x01, 0x00, 0x0c, + 0x01, 0x00, 0x63, 0x01, 0x00, 0x12, 0x01, 0x00, + 0x11, 0x01, 0x00, 0x1a, 0x01, 0x00, 0x60, 0x01, + 0x00, 0x13, 0x01, 0x00, 0x15, 0x01, 0x00, 0x17, + 0x01, 0x00, 0x04, 0x01, 0x00, 0x19, 0x01, 0x00, + 0x14, 0x01, 0x00, 0x64, 0x01, 0x00, 0x37, 0x01, + 0x00, 0x62, 0x01, 0xd0, 0x11, 0xea, 0x03, 0x0e, + 0xc0, 0xe4, 0xe8, 0xe1, 0xdf, 0xe8, 0xe2, 0xd1, + 0x5f, 0x04, 0x00, 0x5e, 0x06, 0x00, 0x5f, 0x05, + 0x00, 0x5e, 0x07, 0x00, 0xe9, 0x22, 0x5e, 0x05, + 0x00, 0x5e, 0x08, 0x00, 0x04, 0xe5, 0x01, 0x00, + 0x00, 0x5e, 0x09, 0x00, 0x5e, 0x05, 0x00, 0xe8, + 0x9f, 0xef, 0x9e, 0x60, 0x05, 0x00, 0x5e, 0x0a, + 0x00, 0x9e, 0x5f, 0x05, 0x00, 0xeb, 0x66, 0x5e, + 0x0b, 0x00, 0xe9, 0x50, 0x5e, 0x0c, 0x00, 0x42, + 0xe6, 0x01, 0x00, 0x00, 0x5e, 0x0d, 0x00, 0x24, + 0x01, 0x00, 0x04, 0xe5, 0x01, 0x00, 0x00, 0x9e, + 0xc8, 0xb4, 0x5f, 0x0d, 0x00, 0x5e, 0x08, 0x00, + 0xbe, 0x00, 0xb9, 0xc4, 0xe8, 0x9f, 0xef, 0xc4, + 0x9e, 0xc8, 0x5e, 0x05, 0x00, 0xc4, 0x42, 0x55, + 0x01, 0x00, 0x00, 0xb4, 0xc4, 0xe8, 0xb8, 0x9f, + 0x24, 0x02, 0x00, 0x04, 0xd1, 0x01, 0x00, 0x00, + 0x9e, 0xc4, 0x42, 0x55, 0x01, 0x00, 0x00, 0xc4, + 0xe8, 0xb8, 0x9f, 0x24, 0x01, 0x00, 0x9e, 0x9e, + 0x5f, 0x05, 0x00, 0x5e, 0x05, 0x00, 0xe8, 0x5f, + 0x09, 0x00, 0x5e, 0x05, 0x00, 0x5e, 0x0e, 0x00, + 0x9e, 0x5f, 0x05, 0x00, 0x5e, 0x0f, 0x00, 0xed, + 0x0e, 0x5e, 0x10, 0x00, 0xed, 0x0e, 0xb4, 0x5f, + 0x11, 0x00, 0x29, 0x07, 0x02, 0x30, 0x0e, 0x43, + 0x02, 0x03, 0xfc, 0x06, 0x01, 0x01, 0x01, 0x03, + 0x04, 0x02, 0x8c, 0x01, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x62, 0x01, 0x00, 0x61, 0x01, 0x00, 0x67, + 0x01, 0xdc, 0x42, 0xe7, 0x01, 0x00, 0x00, 0xd0, + 0x24, 0x01, 0x00, 0xc8, 0xdd, 0x11, 0xb4, 0xac, + 0xe9, 0x16, 0xc4, 0x04, 0xe8, 0x01, 0x00, 0x00, + 0xaa, 0xe9, 0x07, 0xc4, 0xe2, 0xb5, 0xe1, 0xeb, + 0x6c, 0xdf, 0xc4, 0xee, 0x0e, 0xeb, 0x66, 0x11, + 0xb5, 0xac, 0xe9, 0x27, 0xde, 0xc4, 0x9e, 0xe2, + 0xc4, 0x04, 0xe9, 0x01, 0x00, 0x00, 0xaa, 0xe9, + 0x05, 0xb6, 0xe1, 0xeb, 0x50, 0xc4, 0x04, 0xea, + 0x01, 0x00, 0x00, 0xaa, 0xe9, 0x05, 0xb7, 0xe1, + 0xeb, 0x43, 0xdf, 0xde, 0xee, 0x0e, 0xb4, 0xe1, + 0xeb, 0x3b, 0x11, 0xb6, 0xac, 0xe9, 0x27, 0xde, + 0xc4, 0x9e, 0xe2, 0xc4, 0x04, 0xeb, 0x01, 0x00, + 0x00, 0xaa, 0x11, 0xea, 0x0e, 0x0e, 0xc4, 0xbe, + 0x00, 0xa7, 0x11, 0xe9, 0x06, 0x0e, 0xc4, 0xbe, + 0x01, 0xa5, 0x97, 0xe9, 0x18, 0xdf, 0xde, 0xee, + 0x0e, 0xb4, 0xe1, 0xeb, 0x10, 0x11, 0xb7, 0xac, + 0xe9, 0x0b, 0xde, 0xc4, 0x9e, 0xe2, 0xdf, 0xde, + 0xee, 0x0e, 0xb4, 0xe1, 0x29, 0x07, 0x02, 0x30, + 0x07, 0x02, 0x39, 0x0e, 0x43, 0x02, 0x03, 0xfe, + 0x06, 0x01, 0x01, 0x01, 0x05, 0x0d, 0x00, 0xb0, + 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x31, 0x01, + 0x00, 0x38, 0x01, 0x00, 0x5f, 0x01, 0x00, 0x21, + 0x01, 0x00, 0x63, 0x01, 0x00, 0x1c, 0x01, 0x00, + 0x01, 0x0c, 0x00, 0x26, 0x01, 0x00, 0x22, 0x01, + 0x00, 0x3b, 0x01, 0x00, 0x1d, 0x01, 0x00, 0x37, + 0x01, 0xdc, 0xe9, 0x10, 0xdd, 0xd0, 0xee, 0xb5, + 0xac, 0xe9, 0x05, 0xde, 0xd0, 0xee, 0x0e, 0x09, + 0xe0, 0xeb, 0x7a, 0xdf, 0xd0, 0x47, 0xcc, 0xe9, + 0x55, 0xc4, 0x5f, 0x04, 0x00, 0xc4, 0xd0, 0xee, + 0x11, 0xb3, 0xac, 0xe9, 0x09, 0x5e, 0x05, 0x00, + 0x5e, 0x06, 0x00, 0xee, 0x29, 0x11, 0xbc, 0xfe, + 0xac, 0xe9, 0x07, 0x5e, 0x05, 0x00, 0x07, 0xee, + 0x29, 0x11, 0xbc, 0xfd, 0xac, 0xe9, 0x26, 0x65, + 0x07, 0x00, 0x42, 0x3a, 0x01, 0x00, 0x00, 0x65, + 0x07, 0x00, 0x41, 0x3b, 0x01, 0x00, 0x00, 0x07, + 0x24, 0x02, 0x00, 0x0e, 0x65, 0x07, 0x00, 0x42, + 0x3c, 0x01, 0x00, 0x00, 0x5e, 0x08, 0x00, 0x07, + 0x24, 0x02, 0x00, 0x29, 0x0e, 0x5e, 0x04, 0x00, + 0x5f, 0x09, 0x00, 0xeb, 0x20, 0xdd, 0xd0, 0xee, + 0xb5, 0xac, 0xe9, 0x14, 0xd0, 0x04, 0xe5, 0x01, + 0x00, 0x00, 0xa7, 0xe9, 0x0b, 0xde, 0xd0, 0xee, + 0x0e, 0xde, 0x5f, 0x09, 0x00, 0xeb, 0x06, 0x5e, + 0x0a, 0x00, 0xed, 0x0e, 0x5e, 0x0b, 0x00, 0xb4, + 0xa4, 0xe9, 0x04, 0xb4, 0xeb, 0x14, 0x5e, 0x0b, + 0x00, 0x5e, 0x06, 0x00, 0xe8, 0xa6, 0xe9, 0x07, + 0x5e, 0x06, 0x00, 0xe8, 0xeb, 0x04, 0x5e, 0x0b, + 0x00, 0x5f, 0x0b, 0x00, 0x5e, 0x0c, 0x00, 0xed, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0x84, 0x07, 0x02, + 0x01, 0x02, 0x05, 0x02, 0x01, 0x70, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x04, 0x01, 0xdc, 0xd0, 0xee, + 0x97, 0xe9, 0x0a, 0xd0, 0x42, 0x37, 0x00, 0x00, + 0x00, 0x25, 0x00, 0x00, 0xd0, 0xb4, 0xaa, 0xe9, + 0x15, 0xb5, 0xd0, 0x9c, 0xb4, 0xa4, 0xe9, 0x09, + 0x04, 0xec, 0x01, 0x00, 0x00, 0xc8, 0xeb, 0x4c, + 0xbe, 0x00, 0xc8, 0xeb, 0x47, 0xd1, 0xbc, 0x10, + 0xaa, 0xe9, 0x37, 0xd0, 0xdd, 0x42, 0xe2, 0x01, + 0x00, 0x00, 0xd0, 0x24, 0x01, 0x00, 0xac, 0xe9, + 0x29, 0xd0, 0xb4, 0xa4, 0xe9, 0x0c, 0xd0, 0x8d, + 0xd4, 0x04, 0xed, 0x01, 0x00, 0x00, 0xc8, 0xeb, + 0x03, 0xc0, 0xc8, 0xc4, 0x04, 0xee, 0x01, 0x00, + 0x00, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, 0xbc, + 0x10, 0x24, 0x01, 0x00, 0x9e, 0x9e, 0xc8, 0xeb, + 0x0b, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, 0x24, + 0x00, 0x00, 0xc8, 0xc4, 0x28, 0x07, 0x02, 0x30, + 0x0e, 0x43, 0x02, 0x03, 0x86, 0x07, 0x02, 0x01, + 0x02, 0x05, 0x01, 0x01, 0xfe, 0x01, 0x00, 0x00, + 0x69, 0x01, 0x38, 0xd5, 0x00, 0x00, 0x00, 0x42, + 0xd1, 0x00, 0x00, 0x00, 0xd0, 0x24, 0x01, 0x00, + 0x97, 0xe9, 0x29, 0xdc, 0x04, 0xef, 0x01, 0x00, + 0x00, 0xad, 0xe9, 0x17, 0x04, 0xf0, 0x01, 0x00, + 0x00, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, 0x24, + 0x00, 0x00, 0x9e, 0x04, 0xe0, 0x01, 0x00, 0x00, + 0x9e, 0x28, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0xd0, 0xb4, 0xaa, 0xe9, 0x15, + 0xb5, 0xd0, 0x9c, 0xb4, 0xa4, 0xe9, 0x09, 0x04, + 0xec, 0x01, 0x00, 0x00, 0xc8, 0xeb, 0x3e, 0xbe, + 0x00, 0xc8, 0xeb, 0x39, 0xd1, 0xbc, 0x10, 0xaa, + 0xe9, 0x29, 0xd0, 0xb4, 0xa4, 0xe9, 0x0c, 0xd0, + 0x8d, 0xd4, 0x04, 0xed, 0x01, 0x00, 0x00, 0xc8, + 0xeb, 0x03, 0xc0, 0xc8, 0xc4, 0x04, 0xee, 0x01, + 0x00, 0x00, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, + 0xbc, 0x10, 0x24, 0x01, 0x00, 0x9e, 0x9e, 0xc8, + 0xeb, 0x0b, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0xc8, 0xd0, 0x98, 0x04, 0xf1, + 0x01, 0x00, 0x00, 0xac, 0xe9, 0x13, 0xdc, 0x04, + 0xef, 0x01, 0x00, 0x00, 0xad, 0xe9, 0x0a, 0x04, + 0xf2, 0x01, 0x00, 0x00, 0x95, 0x00, 0xeb, 0x57, + 0xdc, 0x04, 0xcf, 0x00, 0x00, 0x00, 0xad, 0xe9, + 0x4e, 0xc4, 0x42, 0xd0, 0x01, 0x00, 0x00, 0x04, + 0xd1, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0xb4, + 0xa4, 0xe9, 0x3c, 0xd1, 0xbc, 0x10, 0xaa, 0x11, + 0xe9, 0x12, 0x0e, 0xc4, 0x42, 0xd0, 0x01, 0x00, + 0x00, 0x04, 0xf3, 0x01, 0x00, 0x00, 0x24, 0x01, + 0x00, 0xb4, 0xa4, 0x11, 0xea, 0x18, 0x0e, 0xd1, + 0xbc, 0x0a, 0xaa, 0xe9, 0x1a, 0xc4, 0x42, 0xd0, + 0x01, 0x00, 0x00, 0x04, 0xf4, 0x01, 0x00, 0x00, + 0x24, 0x01, 0x00, 0xb4, 0xa4, 0xe9, 0x08, 0x04, + 0xf5, 0x01, 0x00, 0x00, 0x95, 0x00, 0xc4, 0x28, + 0x07, 0x02, 0x30, 0x0e, 0x43, 0x02, 0x03, 0x88, + 0x07, 0x02, 0x01, 0x02, 0x05, 0x01, 0x00, 0x4a, + 0x00, 0x00, 0x69, 0x01, 0xd1, 0xbc, 0x10, 0xaa, + 0xe9, 0x29, 0xd0, 0xb4, 0xa4, 0xe9, 0x0c, 0xd0, + 0x8d, 0xd4, 0x04, 0xed, 0x01, 0x00, 0x00, 0xc8, + 0xeb, 0x03, 0xc0, 0xc8, 0xc4, 0x04, 0xee, 0x01, + 0x00, 0x00, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, + 0xbc, 0x10, 0x24, 0x01, 0x00, 0x9e, 0x9e, 0xc8, + 0xeb, 0x0b, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0xc8, 0xdc, 0x04, 0xcf, 0x00, + 0x00, 0x00, 0xac, 0xe9, 0x08, 0x04, 0xf6, 0x01, + 0x00, 0x00, 0x95, 0x00, 0xc4, 0x28, 0x0e, 0x43, + 0x02, 0x03, 0x8a, 0x07, 0x01, 0x02, 0x01, 0x02, + 0x09, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x08, 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x6a, 0x01, 0x00, 0x68, 0x01, 0x00, 0x6c, + 0x01, 0x00, 0x6b, 0x01, 0x00, 0x01, 0x01, 0xbf, + 0x00, 0xc9, 0x26, 0x00, 0x00, 0xc8, 0xc5, 0xd0, + 0xee, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xee, 0x07, + 0x01, 0x06, 0x01, 0x05, 0x0b, 0x00, 0x95, 0x06, + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x08, 0x00, 0xd0, 0x98, 0xc3, 0x04, 0x04, 0x49, + 0x00, 0x00, 0x00, 0xac, 0x69, 0xdd, 0x01, 0x00, + 0x00, 0xd0, 0xf2, 0xe9, 0x0f, 0x65, 0x00, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0xd0, 0x24, 0x01, + 0x00, 0x0e, 0x29, 0xdd, 0x42, 0xd0, 0x01, 0x00, + 0x00, 0xd0, 0x24, 0x01, 0x00, 0xb4, 0xa7, 0xe9, + 0x13, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0x04, 0xf8, 0x01, 0x00, 0x00, 0x24, 0x01, + 0x00, 0x0e, 0x29, 0xde, 0xe9, 0x62, 0xd0, 0x38, + 0xd4, 0x00, 0x00, 0x00, 0xa8, 0x11, 0xea, 0x40, + 0x0e, 0xd0, 0x38, 0xf9, 0x01, 0x00, 0x00, 0xa8, + 0x11, 0xea, 0x35, 0x0e, 0xd0, 0x38, 0xfa, 0x01, + 0x00, 0x00, 0xa8, 0x11, 0xea, 0x2a, 0x0e, 0xd0, + 0x38, 0xfb, 0x01, 0x00, 0x00, 0xa8, 0x11, 0xea, + 0x1f, 0x0e, 0xd0, 0x38, 0xfc, 0x01, 0x00, 0x00, + 0xa8, 0x11, 0xea, 0x14, 0x0e, 0xd0, 0x38, 0xfd, + 0x01, 0x00, 0x00, 0xa8, 0x11, 0xea, 0x09, 0x0e, + 0xd0, 0x38, 0xfe, 0x01, 0x00, 0x00, 0xa8, 0xe9, + 0x17, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, 0x24, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x29, 0xdd, + 0x42, 0x73, 0x01, 0x00, 0x00, 0xd0, 0x24, 0x01, + 0x00, 0x0e, 0xdf, 0x42, 0xff, 0x01, 0x00, 0x00, + 0xd0, 0x24, 0x01, 0x00, 0x69, 0x86, 0x00, 0x00, + 0x00, 0xd0, 0xe8, 0xc8, 0x65, 0x00, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x00, 0x24, 0x01, 0x00, 0x0e, 0xb4, 0xc9, 0xc5, + 0xc4, 0xa4, 0xe9, 0x54, 0xc5, 0xb4, 0xad, 0xe9, + 0x12, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x24, 0x01, + 0x00, 0x0e, 0xc5, 0xd0, 0xa9, 0xe9, 0x0b, 0x5e, + 0x04, 0x00, 0xd0, 0xc5, 0x47, 0xee, 0x0e, 0xeb, + 0x12, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0x04, 0x02, 0x02, 0x00, 0x00, 0x24, 0x01, + 0x00, 0x0e, 0xc5, 0xbc, 0x14, 0xa6, 0xe9, 0x14, + 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0x04, 0x03, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, + 0x0e, 0xeb, 0x05, 0x94, 0x01, 0xeb, 0xa9, 0x65, + 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, + 0x04, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0xec, 0x9d, 0x00, 0x5e, 0x05, 0x00, 0x42, 0x05, + 0x02, 0x00, 0x00, 0xd0, 0x24, 0x01, 0x00, 0x04, + 0x99, 0x00, 0x00, 0x00, 0xac, 0xe9, 0x18, 0x65, + 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0xd0, + 0x42, 0x37, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x0e, 0xeb, 0x71, 0x5e, 0x05, + 0x00, 0x42, 0x06, 0x02, 0x00, 0x00, 0xd0, 0x24, + 0x01, 0x00, 0xce, 0xe8, 0xc8, 0x65, 0x00, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x07, 0x02, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xb4, 0xc9, + 0xc5, 0xc4, 0xa4, 0xe9, 0x39, 0xc5, 0xb4, 0xad, + 0xe9, 0x12, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0x04, 0x01, 0x02, 0x00, 0x00, 0x24, + 0x01, 0x00, 0x0e, 0xc6, 0xc5, 0x47, 0xcb, 0x65, + 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0xc7, + 0x04, 0x08, 0x02, 0x00, 0x00, 0x24, 0x02, 0x00, + 0x0e, 0x5e, 0x04, 0x00, 0xd0, 0xc7, 0x47, 0xee, + 0x0e, 0x94, 0x01, 0xeb, 0xc4, 0x65, 0x00, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x09, 0x02, + 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0xdd, 0x42, + 0x0a, 0x02, 0x00, 0x00, 0xd0, 0x24, 0x01, 0x00, + 0x0e, 0x29, 0xc1, 0x04, 0x04, 0x48, 0x00, 0x00, + 0x00, 0xac, 0xe9, 0x36, 0xd0, 0x42, 0x0b, 0x02, + 0x00, 0x00, 0x24, 0x00, 0x00, 0xc3, 0x05, 0xe8, + 0xbc, 0x4f, 0xa6, 0xe9, 0x16, 0xc1, 0x05, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xb4, 0xbc, 0x4b, 0x24, + 0x02, 0x00, 0x04, 0x0c, 0x02, 0x00, 0x00, 0x9e, + 0xc2, 0x05, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0xc1, 0x05, 0x24, 0x01, 0x00, 0x0e, + 0x29, 0xc1, 0x04, 0x04, 0x46, 0x00, 0x00, 0x00, + 0xac, 0xe9, 0x1e, 0x65, 0x00, 0x00, 0x42, 0x54, + 0x01, 0x00, 0x00, 0x5e, 0x06, 0x00, 0xd0, 0x5e, + 0x07, 0x00, 0xe9, 0x05, 0xbc, 0x10, 0xeb, 0x03, + 0xbc, 0x0a, 0xef, 0x24, 0x01, 0x00, 0x0e, 0x29, + 0xc1, 0x04, 0x04, 0x0d, 0x02, 0x00, 0x00, 0xac, + 0xe9, 0x1e, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0x5e, 0x08, 0x00, 0xd0, 0x5e, 0x07, + 0x00, 0xe9, 0x05, 0xbc, 0x10, 0xeb, 0x03, 0xbc, + 0x0a, 0xef, 0x24, 0x01, 0x00, 0x0e, 0x29, 0xc1, + 0x04, 0x04, 0xf1, 0x01, 0x00, 0x00, 0xac, 0xe9, + 0x1e, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0x5e, 0x09, 0x00, 0xd0, 0x5e, 0x07, 0x00, + 0xe9, 0x05, 0xbc, 0x10, 0xeb, 0x03, 0xbc, 0x0a, + 0xef, 0x24, 0x01, 0x00, 0x0e, 0x29, 0xc1, 0x04, + 0x04, 0x0e, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x1d, + 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0xd0, 0x42, 0x37, 0x00, 0x00, 0x00, 0x24, 0x00, + 0x00, 0x04, 0x0f, 0x02, 0x00, 0x00, 0x9e, 0x24, + 0x01, 0x00, 0x0e, 0x29, 0xc1, 0x04, 0x04, 0x4a, + 0x00, 0x00, 0x00, 0xac, 0xe9, 0x13, 0x65, 0x00, + 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x5e, 0x0a, + 0x00, 0xd0, 0xee, 0x24, 0x01, 0x00, 0x0e, 0x29, + 0xc1, 0x04, 0x04, 0x1b, 0x00, 0x00, 0x00, 0xac, + 0xe9, 0x20, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0x04, 0x10, 0x02, 0x00, 0x00, 0xd0, + 0x41, 0x36, 0x00, 0x00, 0x00, 0x9e, 0x04, 0x50, + 0x01, 0x00, 0x00, 0x9e, 0x24, 0x01, 0x00, 0x0e, + 0x29, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0xd0, 0x24, 0x01, 0x00, 0x0e, 0x29, 0x0e, + 0x43, 0x02, 0x03, 0x8c, 0x07, 0x01, 0x01, 0x01, + 0x04, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x2e, 0x01, + 0xd0, 0xb4, 0x47, 0x04, 0x11, 0x02, 0x00, 0x00, + 0xad, 0xe9, 0x03, 0xc0, 0x28, 0xb5, 0xc8, 0xc4, + 0xd0, 0xe8, 0xa4, 0xe9, 0x0d, 0xdc, 0xd0, 0xc4, + 0x47, 0xee, 0x97, 0xea, 0x05, 0x94, 0x00, 0xeb, + 0xef, 0xd0, 0x42, 0x55, 0x01, 0x00, 0x00, 0xb5, + 0xc4, 0x25, 0x02, 0x00, 0x0e, 0x43, 0x02, 0x03, + 0x8e, 0x07, 0x02, 0x04, 0x02, 0x07, 0x0c, 0x00, + 0xb2, 0x07, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x68, 0x01, 0x00, 0x17, 0x01, 0x00, + 0x09, 0x01, 0x00, 0x0e, 0x01, 0x00, 0x04, 0x01, + 0x00, 0x10, 0x01, 0x00, 0x0f, 0x01, 0x00, 0x06, + 0x01, 0x00, 0x69, 0x01, 0x00, 0x08, 0x01, 0xd0, + 0x04, 0x12, 0x02, 0x00, 0x00, 0xac, 0x11, 0xea, + 0x14, 0x0e, 0xd0, 0x04, 0x13, 0x02, 0x00, 0x00, + 0xac, 0x11, 0xea, 0x09, 0x0e, 0xd0, 0x04, 0xc8, + 0x01, 0x00, 0x00, 0xaa, 0xe9, 0x07, 0xdc, 0xed, + 0x0e, 0xec, 0x8d, 0x03, 0xd0, 0x04, 0x14, 0x02, + 0x00, 0x00, 0xac, 0xe9, 0x4b, 0xd1, 0x42, 0x55, + 0x01, 0x00, 0x00, 0xd0, 0xe8, 0xb5, 0x9e, 0x24, + 0x01, 0x00, 0x42, 0x15, 0x02, 0x00, 0x00, 0x24, + 0x00, 0x00, 0xcf, 0x42, 0x16, 0x02, 0x00, 0x00, + 0x04, 0xd1, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, + 0xc7, 0x42, 0x16, 0x02, 0x00, 0x00, 0x04, 0xd6, + 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0xa5, 0xe9, + 0x08, 0x04, 0x17, 0x02, 0x00, 0x00, 0x95, 0x03, + 0x65, 0x01, 0x00, 0x42, 0x18, 0x02, 0x00, 0x00, + 0xc7, 0x24, 0x01, 0x00, 0x0e, 0x09, 0x28, 0xd0, + 0x04, 0x19, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x06, + 0x0a, 0xe2, 0xec, 0x2c, 0x03, 0xd0, 0x04, 0x1a, + 0x02, 0x00, 0x00, 0xac, 0xe9, 0x06, 0x09, 0xe2, + 0xec, 0x1e, 0x03, 0xd0, 0x04, 0x1b, 0x02, 0x00, + 0x00, 0xac, 0xe9, 0x07, 0xdf, 0x97, 0xe3, 0xec, + 0x0f, 0x03, 0x5e, 0x04, 0x00, 0x69, 0x96, 0x01, + 0x00, 0x00, 0xd0, 0x04, 0xf3, 0x01, 0x00, 0x00, + 0xac, 0x69, 0x8a, 0x01, 0x00, 0x00, 0xd1, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xd0, 0xe8, 0xb5, 0x9e, + 0x24, 0x01, 0x00, 0x42, 0x15, 0x02, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x42, 0x5c, 0x00, 0x00, 0x00, + 0x04, 0xe5, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, + 0xcc, 0xe8, 0xb5, 0xac, 0xe9, 0x49, 0xc4, 0xb4, + 0x47, 0xc0, 0xac, 0xe9, 0x42, 0x65, 0x01, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x1c, 0x02, + 0x00, 0x00, 0x5e, 0x05, 0x00, 0x9e, 0x04, 0x1d, + 0x02, 0x00, 0x00, 0x9e, 0x5e, 0x06, 0x00, 0x42, + 0xe2, 0x01, 0x00, 0x00, 0x5e, 0x05, 0x00, 0x5e, + 0x07, 0x00, 0x9c, 0x24, 0x01, 0x00, 0x9e, 0x04, + 0x1e, 0x02, 0x00, 0x00, 0x9e, 0x5e, 0x08, 0x00, + 0x9e, 0x04, 0x1f, 0x02, 0x00, 0x00, 0x9e, 0x24, + 0x01, 0x00, 0x0e, 0xec, 0x16, 0x01, 0xc4, 0xb4, + 0x47, 0x04, 0x20, 0x02, 0x00, 0x00, 0xac, 0xe9, + 0x0d, 0xbc, 0x0b, 0x5f, 0x05, 0x00, 0xb9, 0x5f, + 0x08, 0x00, 0xec, 0xff, 0x00, 0xc4, 0xb4, 0x47, + 0x04, 0x21, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x0e, + 0xbc, 0x18, 0x5f, 0x05, 0x00, 0xbc, 0x08, 0x5f, + 0x08, 0x00, 0xec, 0xe7, 0x00, 0xc4, 0xb4, 0x47, + 0x04, 0x22, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x0e, + 0xbc, 0x35, 0x5f, 0x05, 0x00, 0xbc, 0x0b, 0x5f, + 0x08, 0x00, 0xec, 0xcf, 0x00, 0xc4, 0xb4, 0x47, + 0x04, 0x23, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x0e, + 0xbc, 0x71, 0x5f, 0x05, 0x00, 0xbc, 0x0f, 0x5f, + 0x08, 0x00, 0xec, 0xb7, 0x00, 0x38, 0x24, 0x02, + 0x00, 0x00, 0xc4, 0xb4, 0x47, 0xee, 0xc9, 0xc4, + 0xe8, 0xb6, 0xa7, 0xe9, 0x0d, 0x38, 0x24, 0x02, + 0x00, 0x00, 0xc4, 0xb5, 0x47, 0xee, 0xca, 0xeb, + 0x0c, 0x38, 0x25, 0x02, 0x00, 0x00, 0x41, 0x26, + 0x02, 0x00, 0x00, 0xca, 0x38, 0x8e, 0x00, 0x00, + 0x00, 0x42, 0xd8, 0x01, 0x00, 0x00, 0xc5, 0x24, + 0x01, 0x00, 0x11, 0xea, 0x1e, 0x0e, 0xc5, 0x38, + 0x25, 0x02, 0x00, 0x00, 0x41, 0x27, 0x02, 0x00, + 0x00, 0xa4, 0x11, 0xea, 0x0e, 0x0e, 0xc5, 0x38, + 0x25, 0x02, 0x00, 0x00, 0x41, 0x28, 0x02, 0x00, + 0x00, 0xa6, 0xe9, 0x14, 0x65, 0x01, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x04, 0x29, 0x02, 0x00, + 0x00, 0x24, 0x01, 0x00, 0x0e, 0x09, 0x28, 0x38, + 0x8e, 0x00, 0x00, 0x00, 0x42, 0xd8, 0x01, 0x00, + 0x00, 0xc6, 0x24, 0x01, 0x00, 0x11, 0xea, 0x1e, + 0x0e, 0xc6, 0x38, 0x25, 0x02, 0x00, 0x00, 0x41, + 0x2a, 0x02, 0x00, 0x00, 0xa4, 0x11, 0xea, 0x0e, + 0x0e, 0xc6, 0x38, 0x25, 0x02, 0x00, 0x00, 0x41, + 0x26, 0x02, 0x00, 0x00, 0xa6, 0xe9, 0x14, 0x65, + 0x01, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, + 0x2b, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0x09, 0x28, 0xc5, 0x5f, 0x05, 0x00, 0xc6, 0x5f, + 0x08, 0x00, 0x09, 0x28, 0x5e, 0x04, 0x00, 0xe9, + 0x78, 0xd0, 0x04, 0x2c, 0x02, 0x00, 0x00, 0xac, + 0xe9, 0x6f, 0xd1, 0x42, 0x55, 0x01, 0x00, 0x00, + 0xd0, 0xe8, 0xb5, 0x9e, 0x24, 0x01, 0x00, 0x42, + 0x15, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0xc8, + 0x5e, 0x06, 0x00, 0x42, 0xe3, 0x01, 0x00, 0x00, + 0x5e, 0x09, 0x00, 0xc4, 0xee, 0x5e, 0x07, 0x00, + 0x9b, 0x24, 0x01, 0x00, 0xcd, 0x38, 0x25, 0x02, + 0x00, 0x00, 0x41, 0x27, 0x02, 0x00, 0x00, 0xa4, + 0x11, 0xea, 0x0e, 0x0e, 0xc5, 0x38, 0x25, 0x02, + 0x00, 0x00, 0x41, 0x28, 0x02, 0x00, 0x00, 0xa6, + 0xe9, 0x14, 0x65, 0x01, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0x04, 0x29, 0x02, 0x00, 0x00, 0x24, + 0x01, 0x00, 0x0e, 0x09, 0x28, 0xc5, 0x5f, 0x05, + 0x00, 0x38, 0x25, 0x02, 0x00, 0x00, 0x41, 0x26, + 0x02, 0x00, 0x00, 0x5f, 0x08, 0x00, 0x09, 0x28, + 0x5e, 0x04, 0x00, 0xe9, 0x6e, 0xd0, 0x04, 0x2d, + 0x02, 0x00, 0x00, 0xac, 0xe9, 0x65, 0xd1, 0x42, + 0x55, 0x01, 0x00, 0x00, 0xd0, 0xe8, 0xb5, 0x9e, + 0x24, 0x01, 0x00, 0x42, 0x15, 0x02, 0x00, 0x00, + 0x24, 0x00, 0x00, 0xcc, 0xc0, 0xac, 0xe9, 0x1e, + 0x65, 0x01, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0x04, 0x2e, 0x02, 0x00, 0x00, 0x5e, 0x0a, 0x00, + 0x9e, 0x04, 0x0d, 0x01, 0x00, 0x00, 0x9e, 0x24, + 0x01, 0x00, 0x0e, 0xeb, 0x2c, 0xc4, 0x04, 0xcf, + 0x00, 0x00, 0x00, 0xac, 0x11, 0xea, 0x09, 0x0e, + 0xc4, 0x04, 0xef, 0x01, 0x00, 0x00, 0xac, 0xe9, + 0x07, 0xc4, 0x5f, 0x0a, 0x00, 0xeb, 0x12, 0x65, + 0x01, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, + 0x2f, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0x09, 0x28, 0xd0, 0x04, 0x30, 0x02, 0x00, 0x00, + 0xac, 0xe9, 0x14, 0x65, 0x01, 0x00, 0x42, 0x54, + 0x01, 0x00, 0x00, 0x04, 0x31, 0x02, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x0e, 0xeb, 0x6a, 0xd0, 0x04, + 0x32, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x10, 0x65, + 0x01, 0x00, 0x42, 0x8f, 0x01, 0x00, 0x00, 0xb4, + 0x24, 0x01, 0x00, 0x0e, 0xeb, 0x52, 0x5e, 0x0b, + 0x00, 0xe9, 0x17, 0xd0, 0x04, 0x45, 0x01, 0x00, + 0x00, 0xac, 0xe9, 0x0e, 0x36, 0x33, 0x02, 0x00, + 0x00, 0x0a, 0x3b, 0x33, 0x02, 0x00, 0x00, 0xeb, + 0x37, 0x5e, 0x0b, 0x00, 0xe9, 0x17, 0xd0, 0x04, + 0xf6, 0x01, 0x00, 0x00, 0xac, 0xe9, 0x0e, 0x36, + 0x33, 0x02, 0x00, 0x00, 0x09, 0x3b, 0x33, 0x02, + 0x00, 0x00, 0xeb, 0x1c, 0x65, 0x01, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x04, 0x34, 0x02, 0x00, + 0x00, 0xd0, 0x9e, 0x04, 0x0d, 0x01, 0x00, 0x00, + 0x9e, 0x24, 0x01, 0x00, 0x0e, 0x09, 0x28, 0x0a, + 0x28, 0x0e, 0x43, 0x02, 0x03, 0x00, 0x01, 0x00, + 0x01, 0x03, 0x01, 0x00, 0x46, 0x00, 0x00, 0x68, + 0x01, 0xd0, 0x11, 0x04, 0x35, 0x02, 0x00, 0x00, + 0xac, 0xe9, 0x05, 0x09, 0xe0, 0xeb, 0x38, 0x11, + 0x04, 0x36, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x05, + 0x0a, 0xe0, 0xeb, 0x2b, 0x11, 0x04, 0x37, 0x02, + 0x00, 0x00, 0xac, 0xe9, 0x0e, 0x36, 0x33, 0x02, + 0x00, 0x00, 0x09, 0x3b, 0x33, 0x02, 0x00, 0x00, + 0xeb, 0x15, 0x11, 0x04, 0x38, 0x02, 0x00, 0x00, + 0xac, 0xe9, 0x0c, 0x36, 0x33, 0x02, 0x00, 0x00, + 0x0a, 0x3b, 0x33, 0x02, 0x00, 0x00, 0x29, 0x0e, + 0x43, 0x02, 0x03, 0x90, 0x07, 0x00, 0x01, 0x00, + 0x05, 0x07, 0x01, 0xd5, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x68, 0x01, 0x00, 0x17, 0x01, 0x00, + 0x08, 0x01, 0x00, 0x09, 0x01, 0x00, 0x69, 0x01, + 0x00, 0x07, 0x01, 0xbf, 0x00, 0xc8, 0x65, 0x00, + 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x39, + 0x02, 0x00, 0x00, 0x04, 0x3a, 0x02, 0x00, 0x00, + 0x9e, 0xc4, 0xdd, 0xee, 0x9e, 0x04, 0x3b, 0x02, + 0x00, 0x00, 0x9e, 0x04, 0x3c, 0x02, 0x00, 0x00, + 0x9e, 0xc4, 0xdd, 0x97, 0xee, 0x9e, 0x04, 0x3d, + 0x02, 0x00, 0x00, 0x9e, 0x04, 0x3e, 0x02, 0x00, + 0x00, 0x9e, 0xc4, 0xde, 0xee, 0x9e, 0x04, 0x3f, + 0x02, 0x00, 0x00, 0x9e, 0x04, 0x40, 0x02, 0x00, + 0x00, 0x9e, 0x24, 0x01, 0x00, 0x0e, 0xdf, 0xe9, + 0x35, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, 0x00, + 0x00, 0x04, 0x41, 0x02, 0x00, 0x00, 0xc4, 0x38, + 0x33, 0x02, 0x00, 0x00, 0xee, 0x9e, 0x04, 0x42, + 0x02, 0x00, 0x00, 0x9e, 0x04, 0x43, 0x02, 0x00, + 0x00, 0x9e, 0xc4, 0x38, 0x33, 0x02, 0x00, 0x00, + 0x97, 0xee, 0x9e, 0x04, 0x44, 0x02, 0x00, 0x00, + 0x9e, 0x24, 0x01, 0x00, 0x0e, 0x5e, 0x04, 0x00, + 0xe9, 0x37, 0x65, 0x00, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0x04, 0x45, 0x02, 0x00, 0x00, 0x04, + 0x46, 0x02, 0x00, 0x00, 0x9e, 0x24, 0x01, 0x00, + 0x0e, 0xdf, 0x97, 0xe9, 0x1c, 0x65, 0x00, 0x00, + 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x47, 0x02, + 0x00, 0x00, 0x5e, 0x05, 0x00, 0x9e, 0x04, 0x48, + 0x02, 0x00, 0x00, 0x9e, 0x24, 0x01, 0x00, 0x0e, + 0x5e, 0x06, 0x00, 0x97, 0xe9, 0x12, 0x65, 0x00, + 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, 0x49, + 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0x94, 0x09, 0x01, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x0f, 0x00, 0xd0, 0xe9, + 0x07, 0x04, 0x7c, 0x00, 0x00, 0x00, 0x28, 0x04, + 0xe5, 0x01, 0x00, 0x00, 0x28, 0x0e, 0x43, 0x02, + 0x03, 0x92, 0x07, 0x01, 0x03, 0x01, 0x06, 0x08, + 0x00, 0x9f, 0x02, 0x00, 0x00, 0x69, 0x01, 0x00, + 0x03, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x19, 0x01, + 0x00, 0x0a, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x6d, + 0x01, 0x00, 0x00, 0x03, 0x6c, 0x95, 0x00, 0x00, + 0x00, 0xdc, 0x04, 0xef, 0x01, 0x00, 0x00, 0xac, + 0xe9, 0x09, 0x04, 0x4b, 0x02, 0x00, 0x00, 0xd0, + 0x9e, 0xd4, 0xdd, 0x11, 0x21, 0x00, 0x00, 0x42, + 0x4c, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, 0xc9, + 0x65, 0x02, 0x00, 0x42, 0x4d, 0x02, 0x00, 0x00, + 0xd0, 0x0b, 0x0a, 0x4c, 0x4e, 0x02, 0x00, 0x00, + 0x24, 0x02, 0x00, 0xc8, 0xdd, 0x11, 0x21, 0x00, + 0x00, 0x42, 0x4c, 0x02, 0x00, 0x00, 0x24, 0x00, + 0x00, 0xc5, 0x9f, 0xe3, 0x65, 0x02, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x5e, 0x04, 0x00, 0x5e, + 0x05, 0x00, 0x41, 0xff, 0x00, 0x00, 0x00, 0x47, + 0x24, 0x01, 0x00, 0x0e, 0x5e, 0x06, 0x00, 0xc4, + 0xee, 0x0e, 0x65, 0x02, 0x00, 0x42, 0x54, 0x01, + 0x00, 0x00, 0x04, 0x0d, 0x01, 0x00, 0x00, 0x24, + 0x01, 0x00, 0x0e, 0x65, 0x02, 0x00, 0x42, 0x54, + 0x01, 0x00, 0x00, 0x5e, 0x04, 0x00, 0x41, 0xd7, + 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, 0x5e, + 0x07, 0x00, 0xc4, 0x43, 0x49, 0x01, 0x00, 0x00, + 0x0e, 0x29, 0xca, 0x6c, 0x86, 0x00, 0x00, 0x00, + 0x65, 0x02, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0x5e, 0x04, 0x00, 0x5e, 0x05, 0x00, 0x41, 0x00, + 0x01, 0x00, 0x00, 0x47, 0x24, 0x01, 0x00, 0x0e, + 0xc6, 0x38, 0x8d, 0x00, 0x00, 0x00, 0xa8, 0xe9, + 0x2c, 0x38, 0x4f, 0x02, 0x00, 0x00, 0x42, 0x50, + 0x02, 0x00, 0x00, 0xc6, 0x24, 0x01, 0x00, 0x0e, + 0xc6, 0x41, 0x35, 0x00, 0x00, 0x00, 0xe9, 0x35, + 0x65, 0x02, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, + 0xc6, 0x41, 0x35, 0x00, 0x00, 0x00, 0x24, 0x01, + 0x00, 0x0e, 0xeb, 0x21, 0x65, 0x02, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x04, 0x51, 0x02, 0x00, + 0x00, 0x24, 0x01, 0x00, 0x0e, 0x38, 0x4f, 0x02, + 0x00, 0x00, 0x42, 0x50, 0x02, 0x00, 0x00, 0xc6, + 0x24, 0x01, 0x00, 0x0e, 0x65, 0x02, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x5e, 0x04, 0x00, 0x41, + 0xd7, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0x0e, 0x29, 0x2f, 0x0e, 0x43, 0x02, 0x03, 0x94, + 0x07, 0x00, 0x00, 0x00, 0x04, 0x0b, 0x00, 0x6e, + 0x00, 0xb4, 0x06, 0x07, 0x01, 0xb6, 0x06, 0x08, + 0x01, 0x9e, 0x03, 0x00, 0x0c, 0xb8, 0x06, 0x09, + 0x01, 0xc2, 0x06, 0x10, 0x01, 0xa6, 0x02, 0x04, + 0x01, 0xbe, 0x06, 0x0e, 0x01, 0xc0, 0x06, 0x0f, + 0x01, 0x82, 0x07, 0x69, 0x01, 0xb2, 0x06, 0x00, + 0x03, 0x96, 0x07, 0x73, 0x01, 0xdc, 0x97, 0xe9, + 0x28, 0xdd, 0xe9, 0x14, 0x65, 0x02, 0x00, 0x42, + 0x54, 0x01, 0x00, 0x00, 0x04, 0x52, 0x02, 0x00, + 0x00, 0x24, 0x01, 0x00, 0x0e, 0xeb, 0x12, 0x65, + 0x02, 0x00, 0x42, 0x54, 0x01, 0x00, 0x00, 0x04, + 0x53, 0x02, 0x00, 0x00, 0x24, 0x01, 0x00, 0x0e, + 0xdf, 0xe9, 0x3c, 0x5e, 0x05, 0x00, 0x42, 0x50, + 0x02, 0x00, 0x00, 0xbc, 0x0a, 0x24, 0x01, 0x00, + 0x5e, 0x05, 0x00, 0x42, 0x50, 0x02, 0x00, 0x00, + 0xb6, 0x24, 0x01, 0x00, 0x9c, 0x5f, 0x04, 0x00, + 0xbc, 0x71, 0x5f, 0x06, 0x00, 0xbc, 0x0f, 0x5f, + 0x07, 0x00, 0xdd, 0xe9, 0x12, 0x04, 0xef, 0x01, + 0x00, 0x00, 0x5f, 0x08, 0x00, 0x5e, 0x09, 0x00, + 0xdc, 0x43, 0x33, 0x02, 0x00, 0x00, 0x5e, 0x0a, + 0x00, 0xed, 0x29, 0x0e, 0x43, 0x02, 0x03, 0x96, + 0x07, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x0c, + 0x00, 0xfa, 0x06, 0x65, 0x01, 0xf2, 0x06, 0x60, + 0x01, 0xd8, 0x06, 0x1b, 0x01, 0x98, 0x07, 0x74, + 0x01, 0xdc, 0xdd, 0x04, 0x54, 0x02, 0x00, 0x00, + 0xde, 0xef, 0xdf, 0xef, 0x29, 0x0e, 0x43, 0x02, + 0x03, 0x98, 0x07, 0x01, 0x00, 0x01, 0x02, 0x02, + 0x00, 0x07, 0x00, 0x00, 0x75, 0x01, 0x00, 0x73, + 0x01, 0xdc, 0xd0, 0xee, 0x0e, 0xdd, 0xed, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0x9a, 0x07, 0x01, 0x02, + 0x01, 0x06, 0x0c, 0x00, 0x9e, 0x01, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x6e, 0x01, 0x00, 0x6f, 0x01, + 0x00, 0x1a, 0x01, 0x00, 0x76, 0x01, 0x00, 0x11, + 0x01, 0x00, 0x1b, 0x01, 0x00, 0x09, 0x01, 0x00, + 0x71, 0x01, 0x00, 0x0e, 0x01, 0x00, 0x0f, 0x01, + 0x00, 0x00, 0x0c, 0xd0, 0xf2, 0xe9, 0x04, 0xc0, + 0xd4, 0x29, 0xd0, 0x04, 0x13, 0x02, 0x00, 0x00, + 0xac, 0xe9, 0x04, 0xdc, 0xed, 0x29, 0xdd, 0xd0, + 0xee, 0xcd, 0xe8, 0xb4, 0xa6, 0xe9, 0x17, 0xde, + 0xc5, 0xd0, 0xef, 0x97, 0xe9, 0x02, 0x29, 0xd0, + 0x42, 0x55, 0x01, 0x00, 0x00, 0xc5, 0xe8, 0xb5, + 0x9e, 0x24, 0x01, 0x00, 0xd4, 0xd0, 0xc0, 0xac, + 0xe9, 0x02, 0x29, 0xdf, 0xe9, 0x0b, 0xdf, 0x04, + 0x0d, 0x01, 0x00, 0x00, 0x9e, 0xd0, 0x9e, 0xd4, + 0x5e, 0x04, 0x00, 0xd0, 0xee, 0xcc, 0xb4, 0x47, + 0x5f, 0x05, 0x00, 0xc4, 0xb5, 0x47, 0x5f, 0x06, + 0x00, 0x5e, 0x05, 0x00, 0xe9, 0x04, 0xd0, 0xe3, + 0x29, 0xc0, 0xe3, 0x5e, 0x07, 0x00, 0xe9, 0x24, + 0x38, 0x25, 0x02, 0x00, 0x00, 0x42, 0x55, 0x02, + 0x00, 0x00, 0x5e, 0x08, 0x00, 0x42, 0x56, 0x02, + 0x00, 0x00, 0x07, 0xd0, 0x24, 0x02, 0x00, 0x5e, + 0x09, 0x00, 0x5e, 0x0a, 0x00, 0x24, 0x03, 0x00, + 0x0e, 0xeb, 0x07, 0x5e, 0x08, 0x00, 0xd0, 0xee, + 0x0e, 0xb4, 0x5f, 0x06, 0x00, 0x65, 0x0b, 0x00, + 0x42, 0x57, 0x02, 0x00, 0x00, 0x24, 0x00, 0x00, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0x9c, 0x07, 0x01, + 0x17, 0x01, 0x04, 0x03, 0x0a, 0x8f, 0x04, 0x00, + 0x00, 0x30, 0x01, 0x00, 0x33, 0x01, 0x00, 0x2f, + 0x01, 0xbf, 0x00, 0xc2, 0x0a, 0xbf, 0x01, 0xc2, + 0x0b, 0xbf, 0x02, 0xc2, 0x0c, 0xbf, 0x03, 0xc2, + 0x0d, 0xbf, 0x04, 0xc2, 0x0e, 0xbf, 0x05, 0xc2, + 0x0f, 0xbf, 0x06, 0xc2, 0x10, 0xbf, 0x07, 0xc2, + 0x11, 0xbf, 0x08, 0xc2, 0x15, 0xbf, 0x09, 0xc2, + 0x16, 0xd0, 0xe8, 0xcb, 0xc0, 0xc2, 0x05, 0xb4, + 0xc2, 0x06, 0xb5, 0xc2, 0x08, 0x26, 0x00, 0x00, + 0xc2, 0x09, 0x04, 0x58, 0x02, 0x00, 0x00, 0x04, + 0x59, 0x02, 0x00, 0x00, 0x9e, 0x04, 0x5a, 0x02, + 0x00, 0x00, 0x9e, 0x04, 0x5b, 0x02, 0x00, 0x00, + 0x9e, 0x04, 0x5c, 0x02, 0x00, 0x00, 0x9e, 0x04, + 0x5d, 0x02, 0x00, 0x00, 0x9e, 0x04, 0x5e, 0x02, + 0x00, 0x00, 0x9e, 0x04, 0x5f, 0x02, 0x00, 0x00, + 0x9e, 0x04, 0x60, 0x02, 0x00, 0x00, 0x9e, 0x04, + 0x61, 0x02, 0x00, 0x00, 0x9e, 0xc2, 0x12, 0x04, + 0x62, 0x02, 0x00, 0x00, 0xc2, 0x13, 0x04, 0x63, + 0x02, 0x00, 0x00, 0xc2, 0x14, 0xb4, 0xc8, 0xc4, + 0xc7, 0xa4, 0x69, 0x75, 0x01, 0x00, 0x00, 0x07, + 0xc2, 0x04, 0xc4, 0xca, 0xd0, 0xc4, 0x92, 0xc8, + 0x47, 0xcd, 0x11, 0x04, 0xe5, 0x01, 0x00, 0x00, + 0xac, 0xea, 0x1c, 0x11, 0x04, 0x0c, 0x01, 0x00, + 0x00, 0xac, 0xea, 0x13, 0x11, 0x04, 0x0f, 0x01, + 0x00, 0x00, 0xac, 0xea, 0x0a, 0x11, 0x04, 0x0d, + 0x01, 0x00, 0x00, 0xac, 0xe9, 0x04, 0x0e, 0xeb, + 0xc7, 0x11, 0x04, 0x64, 0x02, 0x00, 0x00, 0xac, + 0xea, 0x0a, 0x11, 0x04, 0xed, 0x01, 0x00, 0x00, + 0xac, 0xe9, 0x18, 0xc4, 0xc7, 0xa4, 0xe9, 0x0d, + 0xd0, 0xc4, 0x47, 0xc5, 0xaa, 0xe9, 0x06, 0x94, + 0x00, 0x0e, 0xeb, 0xa4, 0xb5, 0xc2, 0x08, 0x0e, + 0xeb, 0x9e, 0x11, 0x04, 0xd6, 0x01, 0x00, 0x00, + 0xac, 0xe9, 0x44, 0xc4, 0xc7, 0xa4, 0xe9, 0x13, + 0xd0, 0xc4, 0x47, 0x04, 0x7c, 0x00, 0x00, 0x00, + 0xaa, 0xe9, 0x08, 0xc1, 0x0d, 0xed, 0x0e, 0xec, + 0xe7, 0x00, 0xc4, 0xc7, 0xa4, 0xe9, 0x13, 0xd0, + 0xc4, 0x47, 0x04, 0xd6, 0x01, 0x00, 0x00, 0xaa, + 0xe9, 0x08, 0xc1, 0x0e, 0xed, 0x0e, 0xec, 0xd0, + 0x00, 0xc1, 0x08, 0xe9, 0x0b, 0xc1, 0x10, 0xed, + 0x0e, 0xb4, 0xc2, 0x08, 0xec, 0xc2, 0x00, 0xb5, + 0xc2, 0x08, 0x0e, 0xec, 0x53, 0xff, 0x11, 0x04, + 0xd2, 0x01, 0x00, 0x00, 0xac, 0xea, 0x13, 0x11, + 0x04, 0xd3, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0a, + 0x11, 0x04, 0x65, 0x02, 0x00, 0x00, 0xac, 0xe9, + 0x0c, 0xc1, 0x0f, 0xc5, 0xee, 0x0e, 0xb4, 0xc2, + 0x08, 0xec, 0x95, 0x00, 0x11, 0x04, 0xdf, 0x01, + 0x00, 0x00, 0xac, 0xea, 0x13, 0x11, 0x04, 0xe9, + 0x01, 0x00, 0x00, 0xac, 0xea, 0x0a, 0x11, 0x04, + 0x66, 0x02, 0x00, 0x00, 0xac, 0xe9, 0x0f, 0xb5, + 0xc2, 0x08, 0x94, 0x06, 0xc1, 0x0a, 0xc5, 0xee, + 0x0e, 0x0e, 0xec, 0x04, 0xff, 0x11, 0x04, 0xe0, + 0x01, 0x00, 0x00, 0xac, 0xea, 0x13, 0x11, 0x04, + 0xd4, 0x01, 0x00, 0x00, 0xac, 0xea, 0x0a, 0x11, + 0x04, 0xd5, 0x01, 0x00, 0x00, 0xac, 0xe9, 0x25, + 0xb4, 0xc2, 0x08, 0xc1, 0x06, 0xb4, 0xa6, 0xe9, + 0x13, 0xdd, 0xc1, 0x0b, 0xed, 0xc5, 0xef, 0xe9, + 0x0b, 0x93, 0x06, 0xc1, 0x0c, 0xed, 0x0e, 0x0e, + 0xec, 0xce, 0xfe, 0x04, 0xfe, 0x00, 0x00, 0x00, + 0xc2, 0x04, 0xeb, 0x2c, 0xde, 0xc5, 0xee, 0xe9, + 0x0a, 0xc1, 0x11, 0xed, 0x0e, 0xb4, 0xc2, 0x08, + 0xeb, 0x1e, 0xdc, 0xc5, 0xee, 0x11, 0xea, 0x09, + 0x0e, 0xc5, 0x04, 0x4a, 0x01, 0x00, 0x00, 0xaa, + 0xe9, 0x07, 0xc1, 0x15, 0xed, 0x0e, 0xeb, 0x08, + 0xb5, 0xc2, 0x08, 0x0e, 0xec, 0x9a, 0xfe, 0x0e, + 0xc1, 0x04, 0x69, 0x94, 0xfe, 0xff, 0xff, 0xc1, + 0x16, 0xc6, 0xc4, 0xef, 0x0e, 0xec, 0x89, 0xfe, + 0xc1, 0x16, 0xc7, 0xc7, 0xef, 0x0e, 0xc1, 0x05, + 0xc1, 0x06, 0xc1, 0x09, 0x26, 0x03, 0x00, 0x28, + 0x0e, 0x43, 0x02, 0x03, 0xce, 0x09, 0x01, 0x00, + 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x00, 0x05, + 0x01, 0xdc, 0xd0, 0x9e, 0xe0, 0x29, 0x0e, 0x43, + 0x02, 0x03, 0xd0, 0x09, 0x01, 0x00, 0x01, 0x04, + 0x01, 0x00, 0x0d, 0x00, 0x00, 0x05, 0x01, 0xdc, + 0x42, 0x55, 0x01, 0x00, 0x00, 0xdc, 0xe8, 0xb5, + 0x9f, 0x25, 0x01, 0x00, 0x0e, 0x43, 0x02, 0x03, + 0xd2, 0x09, 0x01, 0x00, 0x01, 0x05, 0x02, 0x00, + 0x14, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x05, 0x01, + 0xdc, 0xed, 0xd4, 0xdd, 0x42, 0x55, 0x01, 0x00, + 0x00, 0xb4, 0xdd, 0xe8, 0xb5, 0x9f, 0x24, 0x02, + 0x00, 0xe1, 0xd0, 0x28, 0x0e, 0x43, 0x02, 0x03, + 0xd4, 0x09, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, + 0x49, 0x00, 0xd6, 0x09, 0x04, 0x01, 0xce, 0x09, + 0x0a, 0x01, 0xd8, 0x09, 0x00, 0x01, 0xec, 0x07, + 0x03, 0x01, 0xda, 0x09, 0x00, 0x03, 0xd2, 0x09, + 0x0c, 0x01, 0x04, 0xf9, 0x00, 0x00, 0x00, 0xe0, + 0xdd, 0x04, 0xd6, 0x01, 0x00, 0x00, 0xee, 0x0e, + 0xde, 0x90, 0xe2, 0xde, 0xdf, 0xb5, 0x9f, 0xa4, + 0xe9, 0x31, 0x5e, 0x04, 0x00, 0xde, 0x47, 0x04, + 0x7c, 0x00, 0x00, 0x00, 0xaa, 0xe9, 0x1f, 0x5e, + 0x04, 0x00, 0xde, 0xb5, 0x9e, 0x47, 0x04, 0xd6, + 0x01, 0x00, 0x00, 0xaa, 0xe9, 0x10, 0xde, 0xb6, + 0x9e, 0xe2, 0x5e, 0x05, 0x00, 0x04, 0xd6, 0x01, + 0x00, 0x00, 0xee, 0x0e, 0x29, 0xde, 0x90, 0xe2, + 0xeb, 0xca, 0x29, 0x0e, 0x43, 0x02, 0x03, 0xdc, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x1f, + 0x00, 0xd6, 0x09, 0x04, 0x01, 0xd8, 0x09, 0x00, + 0x01, 0xec, 0x07, 0x03, 0x01, 0xda, 0x09, 0x00, + 0x03, 0x04, 0xf9, 0x00, 0x00, 0x00, 0xe0, 0xdd, + 0x90, 0xe1, 0xdd, 0xde, 0xa4, 0xe9, 0x11, 0xdf, + 0xdd, 0x47, 0x04, 0x0d, 0x01, 0x00, 0x00, 0xaa, + 0xea, 0x06, 0xdd, 0x90, 0xe1, 0xeb, 0xec, 0x29, + 0x0e, 0x43, 0x02, 0x03, 0xde, 0x09, 0x01, 0x00, + 0x01, 0x03, 0x07, 0x00, 0x4c, 0x00, 0x00, 0x04, + 0x01, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x03, + 0x00, 0x0c, 0x01, 0x04, 0x48, 0x00, 0x00, 0x00, + 0xe0, 0xdd, 0xd0, 0xee, 0x0e, 0xde, 0xdf, 0xa4, + 0xe9, 0x3d, 0x5e, 0x05, 0x00, 0xde, 0x92, 0xe2, + 0x47, 0x60, 0x04, 0x00, 0x04, 0x0d, 0x01, 0x00, + 0x00, 0xaa, 0xe9, 0x09, 0x04, 0xfe, 0x00, 0x00, + 0x00, 0xe0, 0xeb, 0xe2, 0x5e, 0x04, 0x00, 0x04, + 0x11, 0x02, 0x00, 0x00, 0xaa, 0xe9, 0x0b, 0xde, + 0xdf, 0xa7, 0xea, 0x13, 0xde, 0x90, 0xe2, 0xeb, + 0xcd, 0x5e, 0x04, 0x00, 0xd0, 0xaa, 0xe9, 0xc6, + 0x5e, 0x06, 0x00, 0xed, 0x0e, 0x29, 0x29, 0x0e, + 0x43, 0x02, 0x03, 0xe0, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x09, 0x00, 0xc4, 0x01, 0x00, 0xd6, 0x09, + 0x04, 0x01, 0xce, 0x09, 0x0a, 0x01, 0xd8, 0x09, + 0x00, 0x01, 0xec, 0x07, 0x03, 0x01, 0xb0, 0x06, + 0x01, 0x01, 0xda, 0x09, 0x00, 0x03, 0xd0, 0x09, + 0x0b, 0x01, 0xd2, 0x09, 0x0c, 0x01, 0x90, 0x05, + 0x00, 0x00, 0x04, 0xfa, 0x00, 0x00, 0x00, 0xe0, + 0xdd, 0x04, 0xd6, 0x01, 0x00, 0x00, 0xee, 0x0e, + 0xde, 0xdf, 0xa4, 0x69, 0xb1, 0x00, 0x00, 0x00, + 0x5e, 0x05, 0x00, 0xde, 0x92, 0xe2, 0x47, 0x60, + 0x04, 0x00, 0x04, 0x0d, 0x01, 0x00, 0x00, 0xaa, + 0xe9, 0x09, 0x04, 0xfe, 0x00, 0x00, 0x00, 0xe0, + 0xeb, 0xdf, 0x5e, 0x04, 0x00, 0x04, 0x11, 0x02, + 0x00, 0x00, 0xaa, 0xe9, 0x0b, 0xde, 0xdf, 0xa4, + 0xe9, 0xcf, 0xde, 0x90, 0xe2, 0xeb, 0xca, 0x5e, + 0x06, 0x00, 0xed, 0x04, 0xe9, 0x01, 0x00, 0x00, + 0xaa, 0xe9, 0x13, 0x5e, 0x04, 0x00, 0x04, 0xd4, + 0x01, 0x00, 0x00, 0xaa, 0xe9, 0xb3, 0x5e, 0x07, + 0x00, 0xed, 0x0e, 0xeb, 0xac, 0x5e, 0x04, 0x00, + 0x04, 0xe9, 0x01, 0x00, 0x00, 0xaa, 0xe9, 0x2e, + 0xdd, 0x04, 0xe9, 0x01, 0x00, 0x00, 0xee, 0x0e, + 0x5e, 0x05, 0x00, 0xde, 0x47, 0x04, 0xe9, 0x01, + 0x00, 0x00, 0xaa, 0x11, 0xea, 0x0d, 0x0e, 0x5e, + 0x05, 0x00, 0xde, 0x47, 0x04, 0xd4, 0x01, 0x00, + 0x00, 0xaa, 0x69, 0x7d, 0xff, 0xff, 0xff, 0xde, + 0x90, 0xe2, 0xec, 0x75, 0xff, 0x5e, 0x04, 0x00, + 0x04, 0xd6, 0x01, 0x00, 0x00, 0xaa, 0x69, 0x69, + 0xff, 0xff, 0xff, 0x5e, 0x07, 0x00, 0xed, 0x0e, + 0xde, 0xdf, 0xa4, 0xe9, 0x11, 0x5e, 0x08, 0x00, + 0x5e, 0x05, 0x00, 0xde, 0x47, 0xee, 0xe9, 0x06, + 0xde, 0x90, 0xe2, 0xeb, 0xec, 0x29, 0x0e, 0x43, + 0x02, 0x03, 0xe2, 0x09, 0x00, 0x00, 0x00, 0x03, + 0x05, 0x00, 0x41, 0x00, 0xd6, 0x09, 0x04, 0x01, + 0xd8, 0x09, 0x00, 0x01, 0xec, 0x07, 0x03, 0x01, + 0x90, 0x05, 0x00, 0x00, 0xda, 0x09, 0x00, 0x03, + 0x04, 0x46, 0x00, 0x00, 0x00, 0xe0, 0xdd, 0xde, + 0xa4, 0xe9, 0x36, 0xdf, 0x5e, 0x04, 0x00, 0xdd, + 0x47, 0xee, 0x11, 0xea, 0x25, 0x0e, 0x5e, 0x04, + 0x00, 0xdd, 0x47, 0x04, 0xd1, 0x01, 0x00, 0x00, + 0xaa, 0xe9, 0x1e, 0xdd, 0xde, 0xb5, 0x9f, 0xaa, + 0x11, 0xea, 0x0f, 0x0e, 0x5e, 0x04, 0x00, 0xdd, + 0xb5, 0x9e, 0x47, 0x04, 0xd1, 0x01, 0x00, 0x00, + 0xab, 0xe9, 0x06, 0xdd, 0x90, 0xe1, 0xeb, 0xc7, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0xe4, 0x09, 0x00, + 0x02, 0x00, 0x05, 0x0a, 0x00, 0xb3, 0x01, 0x00, + 0x00, 0x08, 0x01, 0x00, 0x00, 0x01, 0x00, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x02, 0x01, 0x00, 0x12, 0x01, 0x00, 0x04, 0x01, + 0x00, 0x13, 0x01, 0x00, 0x14, 0x01, 0xb5, 0xe0, + 0xdd, 0xde, 0xa4, 0xe9, 0x0f, 0xdf, 0x5e, 0x04, + 0x00, 0xdd, 0x47, 0xee, 0xe9, 0x06, 0xdd, 0x90, + 0xe1, 0xeb, 0xee, 0x04, 0x58, 0x02, 0x00, 0x00, + 0x5e, 0x04, 0x00, 0x42, 0x55, 0x01, 0x00, 0x00, + 0x5e, 0x05, 0x00, 0xdd, 0x24, 0x02, 0x00, 0x9e, + 0x04, 0x58, 0x02, 0x00, 0x00, 0x9e, 0xc8, 0x5e, + 0x06, 0x00, 0x42, 0xd0, 0x01, 0x00, 0x00, 0xc4, + 0x24, 0x01, 0x00, 0xb4, 0xa7, 0xe9, 0x1c, 0x04, + 0xfb, 0x00, 0x00, 0x00, 0x5f, 0x07, 0x00, 0x5e, + 0x08, 0x00, 0x42, 0xd0, 0x01, 0x00, 0x00, 0xc4, + 0x24, 0x01, 0x00, 0xb4, 0xa7, 0xe9, 0x03, 0xb4, + 0xe0, 0x29, 0xdd, 0xc9, 0xc5, 0xde, 0xa4, 0xe9, + 0x12, 0x5e, 0x04, 0x00, 0xc5, 0x47, 0x04, 0xe5, + 0x01, 0x00, 0x00, 0xaa, 0xe9, 0x05, 0x94, 0x01, + 0xeb, 0xeb, 0xc5, 0xde, 0xa4, 0xe9, 0x17, 0x5e, + 0x04, 0x00, 0xc5, 0x47, 0x04, 0xdf, 0x01, 0x00, + 0x00, 0xaa, 0xe9, 0x0a, 0x04, 0x1b, 0x00, 0x00, + 0x00, 0x5f, 0x07, 0x00, 0x29, 0x5e, 0x09, 0x00, + 0x42, 0xd0, 0x01, 0x00, 0x00, 0xc4, 0x24, 0x01, + 0x00, 0xb4, 0xa7, 0xe9, 0x0a, 0x04, 0xfc, 0x00, + 0x00, 0x00, 0x5f, 0x07, 0x00, 0x29, 0x04, 0xfd, + 0x00, 0x00, 0x00, 0x5f, 0x07, 0x00, 0xb4, 0xe0, + 0x29, 0x0e, 0x43, 0x02, 0x03, 0xe6, 0x09, 0x02, + 0x00, 0x02, 0x03, 0x02, 0x00, 0x2b, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x04, 0x01, 0xdc, 0xe8, 0xd0, + 0xa4, 0xe9, 0x12, 0xdc, 0x42, 0x73, 0x01, 0x00, + 0x00, 0x04, 0x16, 0x00, 0x00, 0x00, 0x24, 0x01, + 0x00, 0x0e, 0xeb, 0xea, 0xdc, 0xe8, 0xd1, 0xa4, + 0xe9, 0x0e, 0xdc, 0x42, 0x73, 0x01, 0x00, 0x00, + 0xdd, 0x24, 0x01, 0x00, 0x0e, 0xeb, 0xee, 0x29, +}; + diff --git a/win/dirent.h b/win/dirent.h new file mode 100644 index 0000000..077674e --- /dev/null +++ b/win/dirent.h @@ -0,0 +1,1166 @@ +/* + * Dirent interface for Microsoft Visual Studio + * + * Copyright (C) 1998-2019 Toni Ronkko + * This file is part of dirent. Dirent may be freely distributed + * under the MIT license. For all details and documentation, see + * https://github.com/tronkko/dirent + */ +#ifndef DIRENT_H +#define DIRENT_H + +/* Hide warnings about unreferenced local functions */ +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wunused-function" +#elif defined(_MSC_VER) +# pragma warning(disable:4505) +#elif defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wunused-function" +#endif + +/* + * Include windows.h without Windows Sockets 1.1 to prevent conflicts with + * Windows Sockets 2.0. + */ +#ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +#endif +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Indicates that d_type field is available in dirent structure */ +#define _DIRENT_HAVE_D_TYPE + +/* Indicates that d_namlen field is available in dirent structure */ +#define _DIRENT_HAVE_D_NAMLEN + +/* Entries missing from MSVC 6.0 */ +#if !defined(FILE_ATTRIBUTE_DEVICE) +# define FILE_ATTRIBUTE_DEVICE 0x40 +#endif + +/* File type and permission flags for stat(), general mask */ +#if !defined(S_IFMT) +# define S_IFMT _S_IFMT +#endif + +/* Directory bit */ +#if !defined(S_IFDIR) +# define S_IFDIR _S_IFDIR +#endif + +/* Character device bit */ +#if !defined(S_IFCHR) +# define S_IFCHR _S_IFCHR +#endif + +/* Pipe bit */ +#if !defined(S_IFFIFO) +# define S_IFFIFO _S_IFFIFO +#endif + +/* Regular file bit */ +#if !defined(S_IFREG) +# define S_IFREG _S_IFREG +#endif + +/* Read permission */ +#if !defined(S_IREAD) +# define S_IREAD _S_IREAD +#endif + +/* Write permission */ +#if !defined(S_IWRITE) +# define S_IWRITE _S_IWRITE +#endif + +/* Execute permission */ +#if !defined(S_IEXEC) +# define S_IEXEC _S_IEXEC +#endif + +/* Pipe */ +#if !defined(S_IFIFO) +# define S_IFIFO _S_IFIFO +#endif + +/* Block device */ +#if !defined(S_IFBLK) +# define S_IFBLK 0 +#endif + +/* Link */ +#if !defined(S_IFLNK) +# define S_IFLNK 0 +#endif + +/* Socket */ +#if !defined(S_IFSOCK) +# define S_IFSOCK 0 +#endif + +/* Read user permission */ +#if !defined(S_IRUSR) +# define S_IRUSR S_IREAD +#endif + +/* Write user permission */ +#if !defined(S_IWUSR) +# define S_IWUSR S_IWRITE +#endif + +/* Execute user permission */ +#if !defined(S_IXUSR) +# define S_IXUSR 0 +#endif + +/* Read group permission */ +#if !defined(S_IRGRP) +# define S_IRGRP 0 +#endif + +/* Write group permission */ +#if !defined(S_IWGRP) +# define S_IWGRP 0 +#endif + +/* Execute group permission */ +#if !defined(S_IXGRP) +# define S_IXGRP 0 +#endif + +/* Read others permission */ +#if !defined(S_IROTH) +# define S_IROTH 0 +#endif + +/* Write others permission */ +#if !defined(S_IWOTH) +# define S_IWOTH 0 +#endif + +/* Execute others permission */ +#if !defined(S_IXOTH) +# define S_IXOTH 0 +#endif + +/* Maximum length of file name */ +#if !defined(PATH_MAX) +# define PATH_MAX MAX_PATH +#endif +#if !defined(FILENAME_MAX) +# define FILENAME_MAX MAX_PATH +#endif +#if !defined(NAME_MAX) +# define NAME_MAX FILENAME_MAX +#endif + +/* File type flags for d_type */ +#define DT_UNKNOWN 0 +#define DT_REG S_IFREG +#define DT_DIR S_IFDIR +#define DT_FIFO S_IFIFO +#define DT_SOCK S_IFSOCK +#define DT_CHR S_IFCHR +#define DT_BLK S_IFBLK +#define DT_LNK S_IFLNK + +/* Macros for converting between st_mode and d_type */ +#define IFTODT(mode) ((mode) & S_IFMT) +#define DTTOIF(type) (type) + +/* + * File type macros. Note that block devices, sockets and links cannot be + * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are + * only defined for compatibility. These macros should always return false + * on Windows. + */ +#if !defined(S_ISFIFO) +# define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) +#endif +#if !defined(S_ISDIR) +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) +#endif +#if !defined(S_ISREG) +# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) +#endif +#if !defined(S_ISLNK) +# define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) +#endif +#if !defined(S_ISSOCK) +# define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) +#endif +#if !defined(S_ISCHR) +# define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) +#endif +#if !defined(S_ISBLK) +# define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) +#endif + +/* Return the exact length of the file name without zero terminator */ +#define _D_EXACT_NAMLEN(p) ((p)->d_namlen) + +/* Return the maximum size of a file name */ +#define _D_ALLOC_NAMLEN(p) ((PATH_MAX)+1) + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Wide-character version */ +struct _wdirent { + /* Always zero */ + long d_ino; + + /* File position within stream */ + long d_off; + + /* Structure size */ + unsigned short d_reclen; + + /* Length of name without \0 */ + size_t d_namlen; + + /* File type */ + int d_type; + + /* File name */ + wchar_t d_name[PATH_MAX+1]; +}; +typedef struct _wdirent _wdirent; + +struct _WDIR { + /* Current directory entry */ + struct _wdirent ent; + + /* Private file data */ + WIN32_FIND_DATAW data; + + /* True if data is valid */ + int cached; + + /* Win32 search handle */ + HANDLE handle; + + /* Initial directory name */ + wchar_t *patt; +}; +typedef struct _WDIR _WDIR; + +/* Multi-byte character version */ +struct dirent { + /* Always zero */ + long d_ino; + + /* File position within stream */ + long d_off; + + /* Structure size */ + unsigned short d_reclen; + + /* Length of name without \0 */ + size_t d_namlen; + + /* File type */ + int d_type; + + /* File name */ + char d_name[PATH_MAX+1]; +}; +typedef struct dirent dirent; + +struct DIR { + struct dirent ent; + struct _WDIR *wdirp; +}; +typedef struct DIR DIR; + + +/* Dirent functions */ +static DIR *opendir (const char *dirname); +static _WDIR *_wopendir (const wchar_t *dirname); + +static struct dirent *readdir (DIR *dirp); +static struct _wdirent *_wreaddir (_WDIR *dirp); + +static int readdir_r( + DIR *dirp, struct dirent *entry, struct dirent **result); +static int _wreaddir_r( + _WDIR *dirp, struct _wdirent *entry, struct _wdirent **result); + +static int closedir (DIR *dirp); +static int _wclosedir (_WDIR *dirp); + +static void rewinddir (DIR* dirp); +static void _wrewinddir (_WDIR* dirp); + +static int scandir (const char *dirname, struct dirent ***namelist, + int (*filter)(const struct dirent*), + int (*compare)(const struct dirent**, const struct dirent**)); + +static int alphasort (const struct dirent **a, const struct dirent **b); + +static int versionsort (const struct dirent **a, const struct dirent **b); + + +/* For compatibility with Symbian */ +#define wdirent _wdirent +#define WDIR _WDIR +#define wopendir _wopendir +#define wreaddir _wreaddir +#define wclosedir _wclosedir +#define wrewinddir _wrewinddir + + +/* Internal utility functions */ +static WIN32_FIND_DATAW *dirent_first (_WDIR *dirp); +static WIN32_FIND_DATAW *dirent_next (_WDIR *dirp); + +static int dirent_mbstowcs_s( + size_t *pReturnValue, + wchar_t *wcstr, + size_t sizeInWords, + const char *mbstr, + size_t count); + +static int dirent_wcstombs_s( + size_t *pReturnValue, + char *mbstr, + size_t sizeInBytes, + const wchar_t *wcstr, + size_t count); + +static void dirent_set_errno (int error); + + +/* + * Open directory stream DIRNAME for read and return a pointer to the + * internal working area that is used to retrieve individual directory + * entries. + */ +static _WDIR* +_wopendir( + const wchar_t *dirname) +{ + _WDIR *dirp; +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + /* Desktop */ + DWORD n; +#else + /* WinRT */ + size_t n; +#endif + wchar_t *p; + + /* Must have directory name */ + if (dirname == NULL || dirname[0] == '\0') { + dirent_set_errno (ENOENT); + return NULL; + } + + /* Allocate new _WDIR structure */ + dirp = (_WDIR*) malloc (sizeof (struct _WDIR)); + if (!dirp) { + return NULL; + } + + /* Reset _WDIR structure */ + dirp->handle = INVALID_HANDLE_VALUE; + dirp->patt = NULL; + dirp->cached = 0; + + /* + * Compute the length of full path plus zero terminator + * + * Note that on WinRT there's no way to convert relative paths + * into absolute paths, so just assume it is an absolute path. + */ +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + /* Desktop */ + n = GetFullPathNameW (dirname, 0, NULL, NULL); +#else + /* WinRT */ + n = wcslen (dirname); +#endif + + /* Allocate room for absolute directory name and search pattern */ + dirp->patt = (wchar_t*) malloc (sizeof (wchar_t) * n + 16); + if (dirp->patt == NULL) { + goto exit_closedir; + } + + /* + * Convert relative directory name to an absolute one. This + * allows rewinddir() to function correctly even when current + * working directory is changed between opendir() and rewinddir(). + * + * Note that on WinRT there's no way to convert relative paths + * into absolute paths, so just assume it is an absolute path. + */ +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + /* Desktop */ + n = GetFullPathNameW (dirname, n, dirp->patt, NULL); + if (n <= 0) { + goto exit_closedir; + } +#else + /* WinRT */ + wcsncpy_s (dirp->patt, n+1, dirname, n); +#endif + + /* Append search pattern \* to the directory name */ + p = dirp->patt + n; + switch (p[-1]) { + case '\\': + case '/': + case ':': + /* Directory ends in path separator, e.g. c:\temp\ */ + /*NOP*/; + break; + + default: + /* Directory name doesn't end in path separator */ + *p++ = '\\'; + } + *p++ = '*'; + *p = '\0'; + + /* Open directory stream and retrieve the first entry */ + if (!dirent_first (dirp)) { + goto exit_closedir; + } + + /* Success */ + return dirp; + + /* Failure */ +exit_closedir: + _wclosedir (dirp); + return NULL; +} + +/* + * Read next directory entry. + * + * Returns pointer to static directory entry which may be overwritten by + * subsequent calls to _wreaddir(). + */ +static struct _wdirent* +_wreaddir( + _WDIR *dirp) +{ + struct _wdirent *entry; + + /* + * Read directory entry to buffer. We can safely ignore the return value + * as entry will be set to NULL in case of error. + */ + (void) _wreaddir_r (dirp, &dirp->ent, &entry); + + /* Return pointer to statically allocated directory entry */ + return entry; +} + +/* + * Read next directory entry. + * + * Returns zero on success. If end of directory stream is reached, then sets + * result to NULL and returns zero. + */ +static int +_wreaddir_r( + _WDIR *dirp, + struct _wdirent *entry, + struct _wdirent **result) +{ + WIN32_FIND_DATAW *datap; + + /* Read next directory entry */ + datap = dirent_next (dirp); + if (datap) { + size_t n; + DWORD attr; + + /* + * Copy file name as wide-character string. If the file name is too + * long to fit in to the destination buffer, then truncate file name + * to PATH_MAX characters and zero-terminate the buffer. + */ + n = 0; + while (n < PATH_MAX && datap->cFileName[n] != 0) { + entry->d_name[n] = datap->cFileName[n]; + n++; + } + entry->d_name[n] = 0; + + /* Length of file name excluding zero terminator */ + entry->d_namlen = n; + + /* File type */ + attr = datap->dwFileAttributes; + if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) { + entry->d_type = DT_CHR; + } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { + entry->d_type = DT_DIR; + } else { + entry->d_type = DT_REG; + } + + /* Reset dummy fields */ + entry->d_ino = 0; + entry->d_off = 0; + entry->d_reclen = sizeof (struct _wdirent); + + /* Set result address */ + *result = entry; + + } else { + + /* Return NULL to indicate end of directory */ + *result = NULL; + + } + + return /*OK*/0; +} + +/* + * Close directory stream opened by opendir() function. This invalidates the + * DIR structure as well as any directory entry read previously by + * _wreaddir(). + */ +static int +_wclosedir( + _WDIR *dirp) +{ + int ok; + if (dirp) { + + /* Release search handle */ + if (dirp->handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->handle); + } + + /* Release search pattern */ + free (dirp->patt); + + /* Release directory structure */ + free (dirp); + ok = /*success*/0; + + } else { + + /* Invalid directory stream */ + dirent_set_errno (EBADF); + ok = /*failure*/-1; + + } + return ok; +} + +/* + * Rewind directory stream such that _wreaddir() returns the very first + * file name again. + */ +static void +_wrewinddir( + _WDIR* dirp) +{ + if (dirp) { + /* Release existing search handle */ + if (dirp->handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->handle); + } + + /* Open new search handle */ + dirent_first (dirp); + } +} + +/* Get first directory entry (internal) */ +static WIN32_FIND_DATAW* +dirent_first( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *datap; + DWORD error; + + /* Open directory and retrieve the first entry */ + dirp->handle = FindFirstFileExW( + dirp->patt, FindExInfoStandard, &dirp->data, + FindExSearchNameMatch, NULL, 0); + if (dirp->handle != INVALID_HANDLE_VALUE) { + + /* a directory entry is now waiting in memory */ + datap = &dirp->data; + dirp->cached = 1; + + } else { + + /* Failed to open directory: no directory entry in memory */ + dirp->cached = 0; + datap = NULL; + + /* Set error code */ + error = GetLastError (); + switch (error) { + case ERROR_ACCESS_DENIED: + /* No read access to directory */ + dirent_set_errno (EACCES); + break; + + case ERROR_DIRECTORY: + /* Directory name is invalid */ + dirent_set_errno (ENOTDIR); + break; + + case ERROR_PATH_NOT_FOUND: + default: + /* Cannot find the file */ + dirent_set_errno (ENOENT); + } + + } + return datap; +} + +/* + * Get next directory entry (internal). + * + * Returns + */ +static WIN32_FIND_DATAW* +dirent_next( + _WDIR *dirp) +{ + WIN32_FIND_DATAW *p; + + /* Get next directory entry */ + if (dirp->cached != 0) { + + /* A valid directory entry already in memory */ + p = &dirp->data; + dirp->cached = 0; + + } else if (dirp->handle != INVALID_HANDLE_VALUE) { + + /* Get the next directory entry from stream */ + if (FindNextFileW (dirp->handle, &dirp->data) != FALSE) { + /* Got a file */ + p = &dirp->data; + } else { + /* The very last entry has been processed or an error occurred */ + FindClose (dirp->handle); + dirp->handle = INVALID_HANDLE_VALUE; + p = NULL; + } + + } else { + + /* End of directory stream reached */ + p = NULL; + + } + + return p; +} + +/* + * Open directory stream using plain old C-string. + */ +static DIR* +opendir( + const char *dirname) +{ + struct DIR *dirp; + + /* Must have directory name */ + if (dirname == NULL || dirname[0] == '\0') { + dirent_set_errno (ENOENT); + return NULL; + } + + /* Allocate memory for DIR structure */ + dirp = (DIR*) malloc (sizeof (struct DIR)); + if (!dirp) { + return NULL; + } + { + int error; + wchar_t wname[PATH_MAX + 1]; + size_t n; + + /* Convert directory name to wide-character string */ + error = dirent_mbstowcs_s( + &n, wname, PATH_MAX + 1, dirname, PATH_MAX + 1); + if (error) { + /* + * Cannot convert file name to wide-character string. This + * occurs if the string contains invalid multi-byte sequences or + * the output buffer is too small to contain the resulting + * string. + */ + goto exit_free; + } + + + /* Open directory stream using wide-character name */ + dirp->wdirp = _wopendir (wname); + if (!dirp->wdirp) { + goto exit_free; + } + + } + + /* Success */ + return dirp; + + /* Failure */ +exit_free: + free (dirp); + return NULL; +} + +/* + * Read next directory entry. + */ +static struct dirent* +readdir( + DIR *dirp) +{ + struct dirent *entry; + + /* + * Read directory entry to buffer. We can safely ignore the return value + * as entry will be set to NULL in case of error. + */ + (void) readdir_r (dirp, &dirp->ent, &entry); + + /* Return pointer to statically allocated directory entry */ + return entry; +} + +/* + * Read next directory entry into called-allocated buffer. + * + * Returns zero on success. If the end of directory stream is reached, then + * sets result to NULL and returns zero. + */ +static int +readdir_r( + DIR *dirp, + struct dirent *entry, + struct dirent **result) +{ + WIN32_FIND_DATAW *datap; + + /* Read next directory entry */ + datap = dirent_next (dirp->wdirp); + if (datap) { + size_t n; + int error; + + /* Attempt to convert file name to multi-byte string */ + error = dirent_wcstombs_s( + &n, entry->d_name, PATH_MAX + 1, datap->cFileName, PATH_MAX + 1); + + /* + * If the file name cannot be represented by a multi-byte string, + * then attempt to use old 8+3 file name. This allows traditional + * Unix-code to access some file names despite of unicode + * characters, although file names may seem unfamiliar to the user. + * + * Be ware that the code below cannot come up with a short file + * name unless the file system provides one. At least + * VirtualBox shared folders fail to do this. + */ + if (error && datap->cAlternateFileName[0] != '\0') { + error = dirent_wcstombs_s( + &n, entry->d_name, PATH_MAX + 1, + datap->cAlternateFileName, PATH_MAX + 1); + } + + if (!error) { + DWORD attr; + + /* Length of file name excluding zero terminator */ + entry->d_namlen = n - 1; + + /* File attributes */ + attr = datap->dwFileAttributes; + if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) { + entry->d_type = DT_CHR; + } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) { + entry->d_type = DT_DIR; + } else { + entry->d_type = DT_REG; + } + + /* Reset dummy fields */ + entry->d_ino = 0; + entry->d_off = 0; + entry->d_reclen = sizeof (struct dirent); + + } else { + + /* + * Cannot convert file name to multi-byte string so construct + * an erroneous directory entry and return that. Note that + * we cannot return NULL as that would stop the processing + * of directory entries completely. + */ + entry->d_name[0] = '?'; + entry->d_name[1] = '\0'; + entry->d_namlen = 1; + entry->d_type = DT_UNKNOWN; + entry->d_ino = 0; + entry->d_off = -1; + entry->d_reclen = 0; + + } + + /* Return pointer to directory entry */ + *result = entry; + + } else { + + /* No more directory entries */ + *result = NULL; + + } + + return /*OK*/0; +} + +/* + * Close directory stream. + */ +static int +closedir( + DIR *dirp) +{ + int ok; + if (dirp) { + + /* Close wide-character directory stream */ + ok = _wclosedir (dirp->wdirp); + dirp->wdirp = NULL; + + /* Release multi-byte character version */ + free (dirp); + + } else { + + /* Invalid directory stream */ + dirent_set_errno (EBADF); + ok = /*failure*/-1; + + } + return ok; +} + +/* + * Rewind directory stream to beginning. + */ +static void +rewinddir( + DIR* dirp) +{ + /* Rewind wide-character string directory stream */ + _wrewinddir (dirp->wdirp); +} + +/* + * Scan directory for entries. + */ +static int +scandir( + const char *dirname, + struct dirent ***namelist, + int (*filter)(const struct dirent*), + int (*compare)(const struct dirent**, const struct dirent**)) +{ + struct dirent **files = NULL; + size_t size = 0; + size_t allocated = 0; + const size_t init_size = 1; + DIR *dir = NULL; + struct dirent *entry; + struct dirent *tmp = NULL; + size_t i; + int result = 0; + + /* Open directory stream */ + dir = opendir (dirname); + if (dir) { + + /* Read directory entries to memory */ + while (1) { + + /* Enlarge pointer table to make room for another pointer */ + if (size >= allocated) { + void *p; + size_t num_entries; + + /* Compute number of entries in the enlarged pointer table */ + if (size < init_size) { + /* Allocate initial pointer table */ + num_entries = init_size; + } else { + /* Double the size */ + num_entries = size * 2; + } + + /* Allocate first pointer table or enlarge existing table */ + p = realloc (files, sizeof (void*) * num_entries); + if (p != NULL) { + /* Got the memory */ + files = (dirent**) p; + allocated = num_entries; + } else { + /* Out of memory */ + result = -1; + break; + } + + } + + /* Allocate room for temporary directory entry */ + if (tmp == NULL) { + tmp = (struct dirent*) malloc (sizeof (struct dirent)); + if (tmp == NULL) { + /* Cannot allocate temporary directory entry */ + result = -1; + break; + } + } + + /* Read directory entry to temporary area */ + if (readdir_r (dir, tmp, &entry) == /*OK*/0) { + + /* Did we get an entry? */ + if (entry != NULL) { + int pass; + + /* Determine whether to include the entry in result */ + if (filter) { + /* Let the filter function decide */ + pass = filter (tmp); + } else { + /* No filter function, include everything */ + pass = 1; + } + + if (pass) { + /* Store the temporary entry to pointer table */ + files[size++] = tmp; + tmp = NULL; + + /* Keep up with the number of files */ + result++; + } + + } else { + + /* + * End of directory stream reached => sort entries and + * exit. + */ + qsort (files, size, sizeof (void*), + (int (*) (const void*, const void*)) compare); + break; + + } + + } else { + /* Error reading directory entry */ + result = /*Error*/ -1; + break; + } + + } + + } else { + /* Cannot open directory */ + result = /*Error*/ -1; + } + + /* Release temporary directory entry */ + free (tmp); + + /* Release allocated memory on error */ + if (result < 0) { + for (i = 0; i < size; i++) { + free (files[i]); + } + free (files); + files = NULL; + } + + /* Close directory stream */ + if (dir) { + closedir (dir); + } + + /* Pass pointer table to caller */ + if (namelist) { + *namelist = files; + } + return result; +} + +/* Alphabetical sorting */ +static int +alphasort( + const struct dirent **a, const struct dirent **b) +{ + return strcoll ((*a)->d_name, (*b)->d_name); +} + +/* Sort versions */ +static int +versionsort( + const struct dirent **a, const struct dirent **b) +{ + /* FIXME: implement strverscmp and use that */ + return alphasort (a, b); +} + +/* Convert multi-byte string to wide character string */ +static int +dirent_mbstowcs_s( + size_t *pReturnValue, + wchar_t *wcstr, + size_t sizeInWords, + const char *mbstr, + size_t count) +{ + int error; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 or later */ + error = mbstowcs_s (pReturnValue, wcstr, sizeInWords, mbstr, count); + +#else + + /* Older Visual Studio or non-Microsoft compiler */ + size_t n; + + /* Convert to wide-character string (or count characters) */ + n = mbstowcs (wcstr, mbstr, sizeInWords); + if (!wcstr || n < count) { + + /* Zero-terminate output buffer */ + if (wcstr && sizeInWords) { + if (n >= sizeInWords) { + n = sizeInWords - 1; + } + wcstr[n] = 0; + } + + /* Length of resulting multi-byte string WITH zero terminator */ + if (pReturnValue) { + *pReturnValue = n + 1; + } + + /* Success */ + error = 0; + + } else { + + /* Could not convert string */ + error = 1; + + } + +#endif + return error; +} + +/* Convert wide-character string to multi-byte string */ +static int +dirent_wcstombs_s( + size_t *pReturnValue, + char *mbstr, + size_t sizeInBytes, /* max size of mbstr */ + const wchar_t *wcstr, + size_t count) +{ + int error; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 or later */ + error = wcstombs_s (pReturnValue, mbstr, sizeInBytes, wcstr, count); + +#else + + /* Older Visual Studio or non-Microsoft compiler */ + size_t n; + + /* Convert to multi-byte string (or count the number of bytes needed) */ + n = wcstombs (mbstr, wcstr, sizeInBytes); + if (!mbstr || n < count) { + + /* Zero-terminate output buffer */ + if (mbstr && sizeInBytes) { + if (n >= sizeInBytes) { + n = sizeInBytes - 1; + } + mbstr[n] = '\0'; + } + + /* Length of resulting multi-bytes string WITH zero-terminator */ + if (pReturnValue) { + *pReturnValue = n + 1; + } + + /* Success */ + error = 0; + + } else { + + /* Cannot convert string */ + error = 1; + + } + +#endif + return error; +} + +/* Set errno variable */ +static void +dirent_set_errno( + int error) +{ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + + /* Microsoft Visual Studio 2005 and later */ + _set_errno (error); + +#else + + /* Non-Microsoft compiler or older Microsoft compiler */ + errno = error; + +#endif +} + + +#ifdef __cplusplus +} +#endif +#endif /*DIRENT_H*/ \ No newline at end of file diff --git a/win/getopt.h b/win/getopt.h new file mode 100644 index 0000000..d78b753 --- /dev/null +++ b/win/getopt.h @@ -0,0 +1,653 @@ +#ifndef __GETOPT_H__ +/** + * DISCLAIMER + * This file is part of the mingw-w64 runtime package. + * + * The mingw-w64 runtime package and its code is distributed in the hope that it + * will be useful but WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESSED OR + * IMPLIED ARE HEREBY DISCLAIMED. This includes but is not limited to + * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + /* + * Copyright (c) 2002 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Sponsored in part by the Defense Advanced Research Projects + * Agency (DARPA) and Air Force Research Laboratory, Air Force + * Materiel Command, USAF, under agreement number F39502-99-1-0512. + */ +/*- + * Copyright (c) 2000 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Dieter Baron and Thomas Klausner. + * + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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. + */ + +#pragma warning(disable:4996) + +#define __GETOPT_H__ + +/* All the headers include this file. */ +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define REPLACE_GETOPT /* use this getopt as the system getopt(3) */ + +#ifdef REPLACE_GETOPT +int opterr = 1; /* if error message should be printed */ +int optind = 1; /* index into parent argv vector */ +int optopt = '?'; /* character checked for validity */ +#undef optreset /* see getopt.h */ +#define optreset __mingw_optreset +int optreset; /* reset getopt */ +char *optarg; /* argument associated with option */ +#endif + +//extern int optind; /* index of first non-option in argv */ +//extern int optopt; /* single option character, as parsed */ +//extern int opterr; /* flag to enable built-in diagnostics... */ +// /* (user may set to zero, to suppress) */ +// +//extern char *optarg; /* pointer to argument of current option */ + +#define PRINT_ERROR ((opterr) && (*options != ':')) + +#define FLAG_PERMUTE 0x01 /* permute non-options to the end of argv */ +#define FLAG_ALLARGS 0x02 /* treat non-options as args to option "-1" */ +#define FLAG_LONGONLY 0x04 /* operate as getopt_long_only */ + +/* return values */ +#define BADCH (int)'?' +#define BADARG ((*options == ':') ? (int)':' : (int)'?') +#define INORDER (int)1 + +#ifndef __CYGWIN__ +#define __progname __argv[0] +#else +extern char __declspec(dllimport) *__progname; +#endif + +#ifdef __CYGWIN__ +static char EMSG[] = ""; +#else +#define EMSG "" +#endif + +static int getopt_internal(int, char * const *, const char *, + const struct option *, int *, int); +static int parse_long_options(char * const *, const char *, + const struct option *, int *, int); +static int gcd(int, int); +static void permute_args(int, int, int, char * const *); + +static char *place = EMSG; /* option letter processing */ + +/* XXX: set optreset to 1 rather than these two */ +static int nonopt_start = -1; /* first non option argument (for permute) */ +static int nonopt_end = -1; /* first option after non options (for permute) */ + +/* Error messages */ +static const char recargchar[] = "option requires an argument -- %c"; +static const char recargstring[] = "option requires an argument -- %s"; +static const char ambig[] = "ambiguous option -- %.*s"; +static const char noarg[] = "option doesn't take an argument -- %.*s"; +static const char illoptchar[] = "unknown option -- %c"; +static const char illoptstring[] = "unknown option -- %s"; + +static void +_vwarnx(const char *fmt,va_list ap) +{ + (void)fprintf(stderr,"%s: ",__progname); + if (fmt != NULL) + (void)vfprintf(stderr,fmt,ap); + (void)fprintf(stderr,"\n"); +} + +static void +warnx(const char *fmt,...) +{ + va_list ap; + va_start(ap,fmt); + _vwarnx(fmt,ap); + va_end(ap); +} + +/* + * Compute the greatest common divisor of a and b. + */ +static int +gcd(int a, int b) +{ + int c; + + c = a % b; + while (c != 0) { + a = b; + b = c; + c = a % b; + } + + return (b); +} + +/* + * Exchange the block from nonopt_start to nonopt_end with the block + * from nonopt_end to opt_end (keeping the same order of arguments + * in each block). + */ +static void +permute_args(int panonopt_start, int panonopt_end, int opt_end, + char * const *nargv) +{ + int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos; + char *swap; + + /* + * compute lengths of blocks and number and size of cycles + */ + nnonopts = panonopt_end - panonopt_start; + nopts = opt_end - panonopt_end; + ncycle = gcd(nnonopts, nopts); + cyclelen = (opt_end - panonopt_start) / ncycle; + + for (i = 0; i < ncycle; i++) { + cstart = panonopt_end+i; + pos = cstart; + for (j = 0; j < cyclelen; j++) { + if (pos >= panonopt_end) + pos -= nnonopts; + else + pos += nopts; + swap = nargv[pos]; + /* LINTED const cast */ + ((char **) nargv)[pos] = nargv[cstart]; + /* LINTED const cast */ + ((char **)nargv)[cstart] = swap; + } + } +} + +#ifdef REPLACE_GETOPT +/* + * getopt -- + * Parse argc/argv argument vector. + * + * [eventually this will replace the BSD getopt] + */ +int +getopt(int nargc, char * const *nargv, const char *options) +{ + + /* + * We don't pass FLAG_PERMUTE to getopt_internal() since + * the BSD getopt(3) (unlike GNU) has never done this. + * + * Furthermore, since many privileged programs call getopt() + * before dropping privileges it makes sense to keep things + * as simple (and bug-free) as possible. + */ + return (getopt_internal(nargc, nargv, options, NULL, NULL, 0)); +} +#endif /* REPLACE_GETOPT */ + +//extern int getopt(int nargc, char * const *nargv, const char *options); + +#ifdef _BSD_SOURCE +/* + * BSD adds the non-standard `optreset' feature, for reinitialisation + * of `getopt' parsing. We support this feature, for applications which + * proclaim their BSD heritage, before including this header; however, + * to maintain portability, developers are advised to avoid it. + */ +# define optreset __mingw_optreset +extern int optreset; +#endif +#ifdef __cplusplus +} +#endif +/* + * POSIX requires the `getopt' API to be specified in `unistd.h'; + * thus, `unistd.h' includes this header. However, we do not want + * to expose the `getopt_long' or `getopt_long_only' APIs, when + * included in this manner. Thus, close the standard __GETOPT_H__ + * declarations block, and open an additional __GETOPT_LONG_H__ + * specific block, only when *not* __UNISTD_H_SOURCED__, in which + * to declare the extended API. + */ +#endif /* !defined(__GETOPT_H__) */ + +#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) +#define __GETOPT_LONG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +struct option /* specification for a long form option... */ +{ + const char *name; /* option name, without leading hyphens */ + int has_arg; /* does it take an argument? */ + int *flag; /* where to save its status, or NULL */ + int val; /* its associated status value */ +}; + +enum /* permitted values for its `has_arg' field... */ +{ + no_argument = 0, /* option never takes an argument */ + required_argument, /* option always requires an argument */ + optional_argument /* option may take an argument */ +}; + +/* + * parse_long_options -- + * Parse long options in argc/argv argument vector. + * Returns -1 if short_too is set and the option does not match long_options. + */ +static int +parse_long_options(char * const *nargv, const char *options, + const struct option *long_options, int *idx, int short_too) +{ + char *current_argv, *has_equal; + size_t current_argv_len; + int i, ambiguous, match; + +#define IDENTICAL_INTERPRETATION(_x, _y) \ + (long_options[(_x)].has_arg == long_options[(_y)].has_arg && \ + long_options[(_x)].flag == long_options[(_y)].flag && \ + long_options[(_x)].val == long_options[(_y)].val) + + current_argv = place; + match = -1; + ambiguous = 0; + + optind++; + + if ((has_equal = strchr(current_argv, '=')) != NULL) { + /* argument found (--option=arg) */ + current_argv_len = has_equal - current_argv; + has_equal++; + } else + current_argv_len = strlen(current_argv); + + for (i = 0; long_options[i].name; i++) { + /* find matching long option */ + if (strncmp(current_argv, long_options[i].name, + current_argv_len)) + continue; + + if (strlen(long_options[i].name) == current_argv_len) { + /* exact match */ + match = i; + ambiguous = 0; + break; + } + /* + * If this is a known short option, don't allow + * a partial match of a single character. + */ + if (short_too && current_argv_len == 1) + continue; + + if (match == -1) /* partial match */ + match = i; + else if (!IDENTICAL_INTERPRETATION(i, match)) + ambiguous = 1; + } + if (ambiguous) { + /* ambiguous abbreviation */ + if (PRINT_ERROR) + warnx(ambig, (int)current_argv_len, + current_argv); + optopt = 0; + return (BADCH); + } + if (match != -1) { /* option found */ + if (long_options[match].has_arg == no_argument + && has_equal) { + if (PRINT_ERROR) + warnx(noarg, (int)current_argv_len, + current_argv); + /* + * XXX: GNU sets optopt to val regardless of flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + return (BADARG); + } + if (long_options[match].has_arg == required_argument || + long_options[match].has_arg == optional_argument) { + if (has_equal) + optarg = has_equal; + else if (long_options[match].has_arg == + required_argument) { + /* + * optional argument doesn't use next nargv + */ + optarg = nargv[optind++]; + } + } + if ((long_options[match].has_arg == required_argument) + && (optarg == NULL)) { + /* + * Missing argument; leading ':' indicates no error + * should be generated. + */ + if (PRINT_ERROR) + warnx(recargstring, + current_argv); + /* + * XXX: GNU sets optopt to val regardless of flag + */ + if (long_options[match].flag == NULL) + optopt = long_options[match].val; + else + optopt = 0; + --optind; + return (BADARG); + } + } else { /* unknown option */ + if (short_too) { + --optind; + return (-1); + } + if (PRINT_ERROR) + warnx(illoptstring, current_argv); + optopt = 0; + return (BADCH); + } + if (idx) + *idx = match; + if (long_options[match].flag) { + *long_options[match].flag = long_options[match].val; + return (0); + } else + return (long_options[match].val); +#undef IDENTICAL_INTERPRETATION +} + +/* + * getopt_internal -- + * Parse argc/argv argument vector. Called by user level routines. + */ +static int +getopt_internal(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx, int flags) +{ + char *oli; /* option letter list index */ + int optchar, short_too; + static int posixly_correct = -1; + + if (options == NULL) + return (-1); + + /* + * XXX Some GNU programs (like cvs) set optind to 0 instead of + * XXX using optreset. Work around this braindamage. + */ + if (optind == 0) + optind = optreset = 1; + + /* + * Disable GNU extensions if POSIXLY_CORRECT is set or options + * string begins with a '+'. + * + * CV, 2009-12-14: Check POSIXLY_CORRECT anew if optind == 0 or + * optreset != 0 for GNU compatibility. + */ + if (posixly_correct == -1 || optreset != 0) + posixly_correct = (getenv("POSIXLY_CORRECT") != NULL); + if (*options == '-') + flags |= FLAG_ALLARGS; + else if (posixly_correct || *options == '+') + flags &= ~FLAG_PERMUTE; + if (*options == '+' || *options == '-') + options++; + + optarg = NULL; + if (optreset) + nonopt_start = nonopt_end = -1; +start: + if (optreset || !*place) { /* update scanning pointer */ + optreset = 0; + if (optind >= nargc) { /* end of argument vector */ + place = EMSG; + if (nonopt_end != -1) { + /* do permutation, if we have to */ + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + else if (nonopt_start != -1) { + /* + * If we skipped non-options, set optind + * to the first of them. + */ + optind = nonopt_start; + } + nonopt_start = nonopt_end = -1; + return (-1); + } + if (*(place = nargv[optind]) != '-' || + (place[1] == '\0' && strchr(options, '-') == NULL)) { + place = EMSG; /* found non-option */ + if (flags & FLAG_ALLARGS) { + /* + * GNU extension: + * return non-option as argument to option 1 + */ + optarg = nargv[optind++]; + return (INORDER); + } + if (!(flags & FLAG_PERMUTE)) { + /* + * If no permutation wanted, stop parsing + * at first non-option. + */ + return (-1); + } + /* do permutation */ + if (nonopt_start == -1) + nonopt_start = optind; + else if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + nonopt_start = optind - + (nonopt_end - nonopt_start); + nonopt_end = -1; + } + optind++; + /* process next argument */ + goto start; + } + if (nonopt_start != -1 && nonopt_end == -1) + nonopt_end = optind; + + /* + * If we have "-" do nothing, if "--" we are done. + */ + if (place[1] != '\0' && *++place == '-' && place[1] == '\0') { + optind++; + place = EMSG; + /* + * We found an option (--), so if we skipped + * non-options, we have to permute. + */ + if (nonopt_end != -1) { + permute_args(nonopt_start, nonopt_end, + optind, nargv); + optind -= nonopt_end - nonopt_start; + } + nonopt_start = nonopt_end = -1; + return (-1); + } + } + + /* + * Check long options if: + * 1) we were passed some + * 2) the arg is not just "-" + * 3) either the arg starts with -- we are getopt_long_only() + */ + if (long_options != NULL && place != nargv[optind] && + (*place == '-' || (flags & FLAG_LONGONLY))) { + short_too = 0; + if (*place == '-') + place++; /* --foo long option */ + else if (*place != ':' && strchr(options, *place) != NULL) + short_too = 1; /* could be short option too */ + + optchar = parse_long_options(nargv, options, long_options, + idx, short_too); + if (optchar != -1) { + place = EMSG; + return (optchar); + } + } + + if ((optchar = (int)*place++) == (int)':' || + (optchar == (int)'-' && *place != '\0') || + (oli = (char*)strchr(options, optchar)) == NULL) { + /* + * If the user specified "-" and '-' isn't listed in + * options, return -1 (non-option) as per POSIX. + * Otherwise, it is an unknown option character (or ':'). + */ + if (optchar == (int)'-' && *place == '\0') + return (-1); + if (!*place) + ++optind; + if (PRINT_ERROR) + warnx(illoptchar, optchar); + optopt = optchar; + return (BADCH); + } + if (long_options != NULL && optchar == 'W' && oli[1] == ';') { + /* -W long-option */ + if (*place) /* no space */ + /* NOTHING */; + else if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + warnx(recargchar, optchar); + optopt = optchar; + return (BADARG); + } else /* white space */ + place = nargv[optind]; + optchar = parse_long_options(nargv, options, long_options, + idx, 0); + place = EMSG; + return (optchar); + } + if (*++oli != ':') { /* doesn't take argument */ + if (!*place) + ++optind; + } else { /* takes (optional) argument */ + optarg = NULL; + if (*place) /* no white space */ + optarg = place; + else if (oli[1] != ':') { /* arg not optional */ + if (++optind >= nargc) { /* no arg */ + place = EMSG; + if (PRINT_ERROR) + warnx(recargchar, optchar); + optopt = optchar; + return (BADARG); + } else + optarg = nargv[optind]; + } + place = EMSG; + ++optind; + } + /* dump back option letter */ + return (optchar); +} + +/* + * getopt_long -- + * Parse argc/argv argument vector. + */ +int +getopt_long(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx) +{ + + return (getopt_internal(nargc, nargv, options, long_options, idx, + FLAG_PERMUTE)); +} + +/* + * getopt_long_only -- + * Parse argc/argv argument vector. + */ +int +getopt_long_only(int nargc, char * const *nargv, const char *options, + const struct option *long_options, int *idx) +{ + + return (getopt_internal(nargc, nargv, options, long_options, idx, + FLAG_PERMUTE|FLAG_LONGONLY)); +} + +//extern int getopt_long(int nargc, char * const *nargv, const char *options, +// const struct option *long_options, int *idx); +//extern int getopt_long_only(int nargc, char * const *nargv, const char *options, +// const struct option *long_options, int *idx); +/* + * Previous MinGW implementation had... + */ +#ifndef HAVE_DECL_GETOPT +/* + * ...for the long form API only; keep this for compatibility. + */ +# define HAVE_DECL_GETOPT 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) */ \ No newline at end of file diff --git a/win/premake-vs2017.bat b/win/premake-vs2017.bat new file mode 100644 index 0000000..1386e95 --- /dev/null +++ b/win/premake-vs2017.bat @@ -0,0 +1,4 @@ +cd .. +premake5 vs2017 +cd .build +start vs2017\quickjs-msvc.sln diff --git a/win/premake-vs2019.bat b/win/premake-vs2019.bat new file mode 100644 index 0000000..a6cc9f0 --- /dev/null +++ b/win/premake-vs2019.bat @@ -0,0 +1,4 @@ +cd .. +premake5 vs2019 +cd .build +start vs2019\quickjs-msvc.sln \ No newline at end of file