diff --git a/Makefile b/Makefile index 1dc0abd2fa..7b08d4da8b 100644 --- a/Makefile +++ b/Makefile @@ -58,6 +58,7 @@ endif # causing problems with keeping up to date with the repository. # ############################################################################# +-include Makefile.OpenArena -include Makefile.local ifeq ($(COMPILE_PLATFORM),cygwin) diff --git a/Makefile.OpenArena b/Makefile.OpenArena new file mode 100644 index 0000000000..32abeffeab --- /dev/null +++ b/Makefile.OpenArena @@ -0,0 +1,20 @@ +# Avoid making updates to this file unless you want to change defaults. +# Create a Makefile.local which is ignored by git for your local overrides +# that you don't want committed to git. + +# Defaults for OpenArena. You shouldn't need to modify this section +# This is only the client/server engine so we don't build the QVM here. +BUILD_STANDALONE=1 +BUILD_CLIENT=1 +BUILD_SERVER=1 +BUILD_GAME_SO=0 +BUILD_GAME_QVM=0 +BUILD_BASEGAME=0 +BUILD_MISSIONPACK=0 +BUILD_RENDERER_OPENGL2=1 +BUILD_AUTOUPDATER=0 + +CLIENTBIN=oa-ioquake3 +SERVERBIN=oa-ioq3ded +BASEGAME=baseoa +COPYDIR=/usr/local/games/openarena diff --git a/README.md b/README.md index bbaede219c..671fd28ead 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,24 @@ -![Build](https://github.com/ioquake/ioq3/workflows/Build/badge.svg) +# OpenArena Ioq3 +[![Build](https://github.com/OpenArena-Ioq3/openarena-ioq3/actions/workflows/build.yml/badge.svg)](https://github.com/OpenArena-Ioq3/openarena-ioq3/actions/workflows/build.yml) + +This is a fork of Ioquake3 for use with OpenArena. The goal is to provide players with an up-to-date engine designed for running OpenArena and its mods that minimizes installation time. + +If you have a feature that you want in this engine, first check to see if it should be commited to Ioq3 instead. If it shouldn't be in Ioq3, then make an issue or pull request here. + +## Not todo + +* Break backward compatibility with OA 0.8.8 +* Break backward compatibility with Q3A +* Merge commits that make it difficult to keep up to date with Ioq3 +* Add features specific to one mod +* Add features that should be done in game code + +If the feature makes the base game or another mod run poorly, then don't add it. However, if the feature can be utilized by all modders, then it may be worth adding. + +## Ioquake3 + +```txt ,---------------------------------------. | _ _ ____ | | (_)___ __ _ _ _ __ _| |_____|__ / | @@ -8,34 +27,35 @@ | |_| | | | `--------- https://ioquake3.org --------' +``` The intent of this project is to provide a baseline Quake 3 which may be used for further development and baseq3 fun. Some of the major features currently implemented are: - * SDL 2 backend - * OpenAL sound API support (multiple speaker support and better sound +* SDL 2 backend +* OpenAL sound API support (multiple speaker support and better sound quality) - * Full x86_64 support on Linux - * VoIP support, both in-game and external support through Mumble. - * MinGW compilation support on Windows and cross compilation support on Linux - * AVI video capture of demos - * Much improved console autocompletion - * Persistent console history - * Colorized terminal output - * Optional Ogg Vorbis support - * Much improved QVM tools - * Support for various esoteric operating systems - * cl_guid support - * HTTP/FTP download redirection (using cURL) - * Multiuser support on Windows systems (user specific game data +* Full x86_64 support on Linux +* VoIP support, both in-game and external support through Mumble. +* MinGW compilation support on Windows and cross compilation support on Linux +* AVI video capture of demos +* Much improved console autocompletion +* Persistent console history +* Colorized terminal output +* Optional Ogg Vorbis support +* Much improved QVM tools +* Support for various esoteric operating systems +* cl_guid support +* HTTP/FTP download redirection (using cURL) +* Multiuser support on Windows systems (user specific game data is stored in "%APPDATA%\Quake3") * PNG support * Web support via Emscripten * Many, many bug fixes The map editor and associated compiling tools are not included. We suggest you -use a modern copy from http://icculus.org/gtkradiant/. +use a modern copy from . The original id software readme that accompanied the Q3 source release has been renamed to id-readme.txt so as to prevent confusion. Please refer to the @@ -48,7 +68,7 @@ If you've got issues that you aren't sure are worth filing as bugs, or just want to chat, please visit our forums: https://discourse.ioquake.org -# Thank You: +## Thank You

Digital Ocean
@@ -76,10 +96,12 @@ https://discourse.ioquake.org # Compilation and installation For *nix + 1. Change to the directory containing this readme. 2. Run 'make'. For Windows, + 1. Please refer to the excellent instructions here: https://ioquake3.org/help/building-ioquake3/ @@ -114,6 +136,7 @@ For Web, building with Emscripten see https://developer.chrome.com/blog/wasm-debugging-2020 Installation, for *nix + 1. Set the COPYDIR variable in the shell to be where you installed Quake 3 to. By default it will be /usr/local/games/quake3 if you haven't set it. This is the path as used by the original Linux Q3 installer and subsequent @@ -203,7 +226,7 @@ set using command line arguments: ## New cvars -``` +```txt cl_autoRecordDemo - record a new demo on each map change cl_aviFrameRate - the framerate to use when capturing video cl_aviMotionJpeg - use the mjpeg codec when capturing video @@ -368,9 +391,9 @@ set using command line arguments: desktop resolution. ``` -## New commands +### New commands -``` +```txt video [filename] - start video capture (use with demo command) stopvideo - stop video capture stopmusic - stop background music @@ -412,17 +435,16 @@ set using command line arguments: addbot random - the bot name "random" now selects a random bot ``` +## README for Developers -# README for Developers - -## pk3dir +### pk3dir ioquake3 has a useful new feature for mappers. Paths in a game directory with the extension ".pk3dir" are treated like pk3 files. This means you can keep all files specific to your map in one directory tree and easily zip this folder for distribution. -## 64bit mods +### 64bit mods If you wish to compile external mods as shared libraries on a 64bit platform, and the mod source is derived from the id Q3 SDK, you will need to modify the @@ -445,7 +467,7 @@ typedef int intptr_t; Note if you simply wish to run mods on a 64bit platform you do not need to recompile anything since by default Q3 uses a virtual machine system. -## Creating mods compatible with Q3 1.32b +### Creating mods compatible with Q3 1.32b If you're using this package to create mods for the last official release of Q3, it is necessary to pass the commandline option '-vq3' to your invocation @@ -453,7 +475,7 @@ of q3asm. This is because by default q3asm outputs an updated qvm format that is necessary to fix a bug involving the optimizing pass of the x86 vm JIT compiler. -## Creating standalone games +### Creating standalone games Have you finished the daunting task of removing all dependencies on the Q3 game data? You probably now want to give your users the opportunity to play @@ -470,7 +492,9 @@ If your answer to this question is "no", it probably makes no sense to build your own binaries. Instead, you can just use the pre-built binaries on the website. Just make sure the game is called with: +```txt +set com_basegame +``` in any links/scripts you install for your users to start the game. The binary must not detect any original quake3 game pak files. If this @@ -481,20 +505,26 @@ If you want the engine to use a different directory in your homepath than e.g. "Quake3" on Windows or ".q3a" on Linux, then set a new name at startup by adding +```txt +set com_homepath +``` to the command line. You can also control which game name to use when talking to the master server: +```txt +set com_gamename +``` So clients requesting a server list will only receive servers that have a matching game name. Example line: +```txt +set com_basegame basefoo +set com_homepath .foo +set com_gamename foo +``` If you really changed parts that would make vanilla ioquake3 incompatible with your mod, we have included another way to conveniently build a stand-alone @@ -502,7 +532,7 @@ binary. Just run make with the option BUILD_STANDALONE=1. Don't forget to edit the PRODUCT_NAME and subsequent #defines in qcommon/q_shared.h with information appropriate for your project. -## Standalone game licensing +### Standalone game licensing While a lot of work has been put into ioquake3 that you can benefit from free of charge, it does not mean that you have no obligations to fulfill. Please be @@ -514,9 +544,11 @@ the game logic freely available to everyone. Furthermore, note that the "QIIIA Game Source License" prohibits distribution of mods that are intended to operate on a version of Q3 not sanctioned by id software: +```txt "with this Agreement, ID grants to you the non-exclusive and limited right to distribute copies of the Software ... for operation only with the full version of the software game QUAKE III ARENA" +``` This means that if you're creating a standalone game, you cannot use said license on any portion of the product. As the only other license this code has @@ -527,8 +559,7 @@ not prohibit commercial exploitation and all assets (e.g. textures, sounds, maps) created by yourself are your property and can be sold like every other game you find in stores. - -## PNG support +### PNG support ioquake3 supports the use of PNG (Portable Network Graphic) images as textures. It should be noted that the use of such images in a map will @@ -541,15 +572,19 @@ by ioquake3. To change this behaviour open the file 'q3.game' in the 'games' directory of the GtkRadiant base directory with an editor and change the line: +```c texturetypes="tga jpg" +``` to +```c texturetypes="tga jpg png" +``` Restart GtkRadiant and PNG textures are now available. -## Building with MinGW for pre Windows XP +### Building with MinGW for pre Windows XP IPv6 support requires a header named "wspiapi.h" to abstract away from differences in earlier versions of Windows' IPv6 stack. There is no MinGW @@ -558,10 +593,9 @@ redistributable, so in its absence we're forced to require Windows XP. However if this header is acquired separately and placed in the qcommon/ directory, this restriction is lifted. +## Contributing -# Contributing - -Please send all patches to bugzilla (https://bugzilla.icculus.org), or as a GitHub pull request and +Please send all patches to bugzilla (), or as a GitHub pull request and submit your patch there. The focus for ioq3 is to develop a stable base suitable for further development @@ -584,12 +618,10 @@ Maintainers Significant contributions from - * Ryan C. Gordon - * Andreas Kohn - * Joerg Dietrich - * Stuart Dalton - * Vincent S. Cojot - * optical - * Aaron Gyes - - +* Ryan C. Gordon +* Andreas Kohn +* Joerg Dietrich +* Stuart Dalton +* Vincent S. Cojot \ +* optical +* Aaron Gyes diff --git a/code/client/cl_main.c b/code/client/cl_main.c index 6c2579525c..bd0187a1ba 100644 --- a/code/client/cl_main.c +++ b/code/client/cl_main.c @@ -3209,7 +3209,7 @@ void CL_InitRef( void ) { Com_Printf( "----- Initializing Renderer ----\n" ); #ifdef USE_RENDERER_DLOPEN - cl_renderer = Cvar_Get("cl_renderer", "opengl2", CVAR_ARCHIVE | CVAR_LATCH); + cl_renderer = Cvar_Get("cl_renderer", "opengl1", CVAR_ARCHIVE | CVAR_LATCH); Com_sprintf(dllName, sizeof(dllName), "renderer_%s_" ARCH_STRING DLL_EXT, cl_renderer->string); @@ -3218,7 +3218,7 @@ void CL_InitRef( void ) { Com_Printf("failed:\n\"%s\"\n", Sys_LibraryError()); Cvar_ForceReset("cl_renderer"); - Com_sprintf(dllName, sizeof(dllName), "renderer_opengl2_" ARCH_STRING DLL_EXT); + Com_sprintf(dllName, sizeof(dllName), "renderer_opengl1_" ARCH_STRING DLL_EXT); rendererLib = Sys_LoadDll(dllName, qfalse); } @@ -3606,7 +3606,7 @@ void CL_Init( void ) { Cvar_CheckRange(j_side_axis, 0, MAX_JOYSTICK_AXIS-1, qtrue); Cvar_CheckRange(j_up_axis, 0, MAX_JOYSTICK_AXIS-1, qtrue); - cl_motdString = Cvar_Get( "cl_motdString", "", CVAR_ROM ); + cl_motdString = Cvar_Get( "cl_motdString", "0", CVAR_ROM ); Cvar_Get( "cl_maxPing", "800", CVAR_ARCHIVE ); diff --git a/code/client/snd_mem.c b/code/client/snd_mem.c index b692eb579b..256caf2680 100644 --- a/code/client/snd_mem.c +++ b/code/client/snd_mem.c @@ -32,7 +32,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "snd_local.h" #include "snd_codec.h" -#define DEF_COMSOUNDMEGS "8" +#define DEF_COMSOUNDMEGS "32" /* =============================================================================== diff --git a/code/curl-7.54.0/include/curl/curlbuild.h b/code/curl-7.54.0/include/curl/curlbuild.h index f596c60704..947f74e443 100644 --- a/code/curl-7.54.0/include/curl/curlbuild.h +++ b/code/curl-7.54.0/include/curl/curlbuild.h @@ -288,19 +288,34 @@ # define CURL_SIZEOF_CURL_SOCKLEN_T 4 #elif defined(__LCC__) -# define CURL_SIZEOF_LONG 4 -# define CURL_TYPEOF_CURL_OFF_T long -# define CURL_FORMAT_CURL_OFF_T "ld" -# define CURL_FORMAT_CURL_OFF_TU "lu" -# define CURL_FORMAT_OFF_T "%ld" -# define CURL_SIZEOF_CURL_OFF_T 4 -# define CURL_SUFFIX_CURL_OFF_T L -# define CURL_SUFFIX_CURL_OFF_TU UL -# define CURL_TYPEOF_CURL_SOCKLEN_T int -# define CURL_SIZEOF_CURL_SOCKLEN_T 4 +# if defined(__MCST__) /* MCST eLbrus Compiler Collection */ +# define CURL_SIZEOF_LONG 8 +# define CURL_TYPEOF_CURL_OFF_T long +# define CURL_FORMAT_CURL_OFF_T "ld" +# define CURL_FORMAT_CURL_OFF_TU "lu" +# define CURL_FORMAT_OFF_T "%ld" +# define CURL_SIZEOF_CURL_OFF_T 8 +# define CURL_SUFFIX_CURL_OFF_T L +# define CURL_SUFFIX_CURL_OFF_TU UL +# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t +# define CURL_SIZEOF_CURL_SOCKLEN_T 4 +# define CURL_PULL_SYS_TYPES_H 1 +# define CURL_PULL_SYS_SOCKET_H 1 +# else /* Local (or Little) C Compiler */ +# define CURL_SIZEOF_LONG 4 +# define CURL_TYPEOF_CURL_OFF_T long +# define CURL_FORMAT_CURL_OFF_T "ld" +# define CURL_FORMAT_CURL_OFF_TU "lu" +# define CURL_FORMAT_OFF_T "%ld" +# define CURL_SIZEOF_CURL_OFF_T 4 +# define CURL_SUFFIX_CURL_OFF_T L +# define CURL_SUFFIX_CURL_OFF_TU UL +# define CURL_TYPEOF_CURL_SOCKLEN_T int +# define CURL_SIZEOF_CURL_SOCKLEN_T 4 +# endif #elif defined(__SYMBIAN32__) -# if defined(__EABI__) /* Treat all ARM compilers equally */ +# if defined(__EABI__) /* Treat all ARM compilers equally */ # define CURL_SIZEOF_LONG 4 # define CURL_TYPEOF_CURL_OFF_T long long # define CURL_FORMAT_CURL_OFF_T "lld" @@ -539,7 +554,8 @@ # define CURL_SUFFIX_CURL_OFF_T LL # define CURL_SUFFIX_CURL_OFF_TU ULL # elif defined(__LP64__) || \ - defined(__x86_64__) || defined(__ppc64__) || defined(__powerpc64__) || defined(__sparc64__) + defined(__x86_64__) || defined(__ppc64__) || defined(__powerpc64__) || defined(__sparc64__) || \ + defined(__e2k__) /* MCST Elbrus 2000 */ # define CURL_SIZEOF_LONG 8 # define CURL_TYPEOF_CURL_OFF_T long # define CURL_FORMAT_CURL_OFF_T "ld" diff --git a/code/qcommon/common.c b/code/qcommon/common.c index 01ddebf893..4453b6737a 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -38,8 +38,8 @@ int demo_protocols[] = #define MIN_DEDICATED_COMHUNKMEGS 1 #define MIN_COMHUNKMEGS 56 -#define DEF_COMHUNKMEGS 128 -#define DEF_COMZONEMEGS 24 +#define DEF_COMHUNKMEGS 256 +#define DEF_COMZONEMEGS 64 // Was 24. #define DEF_COMHUNKMEGS_S XSTRING(DEF_COMHUNKMEGS) #define DEF_COMZONEMEGS_S XSTRING(DEF_COMZONEMEGS) @@ -2747,7 +2747,7 @@ void Com_Init( char *commandLine ) { // browser-driven event loop. So default throttling to off. com_maxfps = Cvar_Get ("com_maxfps", "0", CVAR_ARCHIVE); #else - com_maxfps = Cvar_Get ("com_maxfps", "85", CVAR_ARCHIVE); + com_maxfps = Cvar_Get ("com_maxfps", "125", CVAR_ARCHIVE); #endif com_blood = Cvar_Get ("com_blood", "1", CVAR_ARCHIVE); diff --git a/code/qcommon/q_math.c b/code/qcommon/q_math.c index 393822569c..c518bc7cbb 100644 --- a/code/qcommon/q_math.c +++ b/code/qcommon/q_math.c @@ -47,7 +47,7 @@ vec4_t colorLtGrey = {0.75, 0.75, 0.75, 1}; vec4_t colorMdGrey = {0.5, 0.5, 0.5, 1}; vec4_t colorDkGrey = {0.25, 0.25, 0.25, 1}; -vec4_t g_color_table[8] = +vec4_t g_color_table[NUMBER_OF_COLORS] = { {0.0, 0.0, 0.0, 1.0}, {1.0, 0.0, 0.0, 1.0}, @@ -57,6 +57,7 @@ vec4_t g_color_table[8] = {0.0, 1.0, 1.0, 1.0}, {1.0, 0.0, 1.0, 1.0}, {1.0, 1.0, 1.0, 1.0}, + {1.0, 0.43, 0.0, 1.0}, }; diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index d7ede8af29..95f417fe78 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -27,19 +27,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // A user mod should never modify this file #ifdef STANDALONE - #define PRODUCT_NAME "iofoo3" - #define BASEGAME "foobar" - #define CLIENT_WINDOW_TITLE "changeme" - #define CLIENT_WINDOW_MIN_TITLE "changeme2" - #define HOMEPATH_NAME_UNIX ".foo" - #define HOMEPATH_NAME_WIN "FooBar" + #define PRODUCT_NAME "oa-ioq3" + #define BASEGAME "baseoa" + #define CLIENT_WINDOW_TITLE "OpenArena" + #define CLIENT_WINDOW_MIN_TITLE "OA" + #define HOMEPATH_NAME_UNIX ".openarena" + #define HOMEPATH_NAME_WIN "OpenArena" #define HOMEPATH_NAME_MACOSX HOMEPATH_NAME_WIN // #define STEAMPATH_NAME "Foo Bar" // #define STEAMPATH_APPID "" - #define GAMENAME_FOR_MASTER "foobar" // must NOT contain whitespace - #define CINEMATICS_LOGO "foologo.roq" + #define GAMENAME_FOR_MASTER "Quake3Arena" // must NOT contain whitespace. No servers show up if you use "openarena" + #define CINEMATICS_LOGO "idlogo.roq" #define CINEMATICS_INTRO "intro.roq" -// #define LEGACY_PROTOCOL // You probably don't need this for your standalone game + #define LEGACY_PROTOCOL // You probably don't need this for your standalone game // #define PROTOCOL_HANDLER "foobar" #else #define PRODUCT_NAME "ioq3" @@ -413,6 +413,7 @@ extern vec4_t colorLtGrey; extern vec4_t colorMdGrey; extern vec4_t colorDkGrey; +#define NUMBER_OF_COLORS 9 #define Q_COLOR_ESCAPE '^' qboolean Q_IsColorString(const char *p); // ^[0-9a-zA-Z] @@ -424,7 +425,7 @@ qboolean Q_IsColorString(const char *p); // ^[0-9a-zA-Z] #define COLOR_CYAN '5' #define COLOR_MAGENTA '6' #define COLOR_WHITE '7' -#define ColorIndexForNumber(c) ((c) & 0x07) +#define ColorIndexForNumber(c) ((c) % NUMBER_OF_COLORS) #define ColorIndex(c) (ColorIndexForNumber((c) - '0')) #define S_COLOR_BLACK "^0" @@ -435,8 +436,9 @@ qboolean Q_IsColorString(const char *p); // ^[0-9a-zA-Z] #define S_COLOR_CYAN "^5" #define S_COLOR_MAGENTA "^6" #define S_COLOR_WHITE "^7" +#define S_COLOR_MENU "^8" -extern vec4_t g_color_table[8]; +extern vec4_t g_color_table[NUMBER_OF_COLORS]; #define MAKERGB( v, r, g, b ) v[0]=r;v[1]=g;v[2]=b #define MAKERGBA( v, r, g, b, a ) v[0]=r;v[1]=g;v[2]=b;v[3]=a diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index 137fa43d84..202fc34419 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -251,8 +251,8 @@ PROTOCOL ============================================================== */ -#define PROTOCOL_VERSION 71 -#define PROTOCOL_LEGACY_VERSION 68 +#define PROTOCOL_VERSION 72 +#define PROTOCOL_LEGACY_VERSION 71 // 1.31 - 67 // maintain a list of compatible protocols for demo playing @@ -264,7 +264,7 @@ extern int demo_protocols[]; #endif // override on command line, config files etc. #ifndef MASTER_SERVER_NAME -#define MASTER_SERVER_NAME "master.quake3arena.com" +#define MASTER_SERVER_NAME "dpmaster.deathmask.net" #endif #ifndef STANDALONE diff --git a/code/sdl/sdl_icon.h b/code/sdl/sdl_icon.h index 866c549d5e..f7cacd10b2 100644 --- a/code/sdl/sdl_icon.h +++ b/code/sdl/sdl_icon.h @@ -11,122 +11,160 @@ static const struct { "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0w\0\0\377w\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\377w\0\0" - "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\377w\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0" - "\0\377w\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\377w\0\0\377\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0w\0\0\377w\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\210\0\0\377\210\0\0\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\210\0\0\377\210\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\210\0\0\377\210\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\210\0\0\377\210\0\0" - "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\252\0\0" - "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\231\0\0\377\210\0\0\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\252\0\0\377\0\0\0\0\273\0\0\377\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\231\0\0\377\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\273\0\0\377\314\0\0\377\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\231\0\0\377\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\231\0\0" - "\377\314\0\0\377\0\0\0\0\335\0\0\377\314\0\0\377\231\0\0\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\231\0\0\377\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\231\0\0\377\314\0\0\377\335" - "\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\231\0\0\377\314\0\0\377\335\0\0\377\335" - "\0\0\377\273\0\0\377\231\0\0\377\210\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\231\0\0\377\252\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\0\0\377\273\0\0\377\335\0\0\377\335\0\0" - "\377\314\0\0\377\231\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\252\0\0\377\314\0\0\377\314\0\0\377\314\0\0\377\314\0\0\377" - "\314\0\0\377\314\0\0\377\314\0\0\377\314\0\0\377\0\0\0\0\252\0\0\377\252" - "\0\0\377\0\0\0\0\314\0\0\377\314\0\0\377\314\0\0\377\314\0\0\377\314\0\0" - "\377\314\0\0\377\314\0\0\377\314\0\0\377\252\0\0\377\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\210\0\0\377\231\0\0\377\273\0\0\377\314\0\0\377\314" - "\0\0\377\0\0\0\0\252\0\0\377\252\0\0\377\0\0\0\0\314\0\0\377\314\0\0\377" - "\273\0\0\377\231\0\0\377\210\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\210\0\0\377" - "\273\0\0\377\0\0\0\0\252\0\0\377\252\0\0\377\0\0\0\0\273\0\0\377\210\0\0" - "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\377\273\0\0\377" - "\0\0\0\0\231\0\0\377\252\0\0\377\0\0\0\0\273\0\0\377w\0\0\377\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\0\0\377\0\0\0\0\231\0\0" - "\377\231\0\0\377\0\0\0\0\252\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\252\0\0\377\0\0\0\0\210\0\0\377\231\0\0\377" - "\0\0\0\0\252\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\231\0\0\377\0\0\0\0\210\0\0\377\210\0\0\377\0\0\0\0\231\0\0" - "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\231" - "\0\0\377\0\0\0\0w\0\0\377\210\0\0\377\0\0\0\0\231\0\0\377\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\210\0\0\377\0\0\0\0\210" - "\0\0\377\210\0\0\377\0\0\0\0\210\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\210\0\0\377\0\0\0\0w\0\0\377\210\0\0\377" - "\0\0\0\0\210\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0w\0\0\377\0\0\0\0w\0\0\377w\0\0\377\0\0\0\0w\0\0\377\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\377\0\0\0\0" - "w\0\0\377w\0\0\377\0\0\0\0w\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\377\0\0\0\0w\0\0\377w\0\0\377\0\0\0\0w\0" - "\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0f\0\0\377f\0\0\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\0\0\377f\0\0\377" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" - "\0\0\0\0\0\0\0\0", + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\24\23\23" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\26\26\25\23\233\223\220-\255\245\2408\254\244" + "\2376wpl#\0\0\0\1\0\0\0\0\0\0\0\0<86\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\12\11\11\0\0\0\0\0\0\0\0\0\231\222\220?\260\251\246" + "\221\266\256\253\325\274\264\260\377\300\267\263\377\277\266\261\377\277" + "\266\260\377\300\266\260\377\301\267\261\377\303\270\262\377\267\254\245" + "\352\267\253\244\243\240\225\216D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\27\26\27\0\0\0\0\0IFF\16\257\252\250\216\272\264\262\371\300\271\267\377" + "\300\271\266\377\301\271\265\377\265\255\247\377\254\243\232\377\254\243" + "\231\377\256\245\234\377\264\253\243\377\271\260\250\377\275\263\254\377" + "\301\266\257\377\303\267\257\376\306\271\260\377\276\262\250\353\243\227" + "\217R\0\0\0\0?:7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\261\254\254\230\277\271\270\377\277\270" + "\270\377\257\247\241\377\215\203x\377\271\260\254\377\303\272\266\377\270" + "\260\253\377m`P\377\206}n\377\215\206w\377\224\217\201\377\231\226\211\377" + "\240\234\222\376\245\240\230\377\261\247\240\377\306\271\261\377\307\272" + "\260\376\311\273\261\377\271\254\242\266\0\0\0\0\211~v\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\236\232\232F\300\273\273" + "\372\301\273\274\377\243\232\220\377\177p\\\377i\\H\377d_^\377\313\303\276" + "\377\307\276\270\377\306\274\267\377\205zr\377f\\O\244\200zmx\203~st\217" + "\213\200\200\210\206~\240\220\217\210\324\220\215\212\377\214\204\202\377" + "\300\263\253\376\312\273\260\377\313\274\260\377\300\262\246\317\0\0\0\0" + "\14\12\12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27\27\27\0\0\0\0\0\257\252\253" + "\207\307\302\303\377\262\253\247\376wfR\377dR:\377`R?\376223\377\260\251" + "\246\376\313\301\274\377\314\301\274\377\312\300\272\377\313\301\273\377" + "=2+\263\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5wrrl~y{\364\310\272" + "\260\377\315\275\261\377\316\276\261\377\274\254\241\222\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\271\265\265\240\312\305\306\377\234\222" + "\210\377aM2\377]J3\376YI4\3770-,\320igfv\322\310\303\377\317\305\277\377" + "\317\304\276\377\317\304\275\377\315\302\272\377\232\217\210\377\0\0\0""6" + "\35\27\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\225\221\221\261" + "\322\302\264\377\317\277\262\377\317\276\261\377rib\25\20\16\14\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\264\261\261\204\315\312\313\377\225\211}\377VA&\377VC*\376" + "VC,\3779/$`\0\0\0\0\307\276\271\325\323\310\302\376\323\310\301\377\323\307" + "\300\377\322\307\277\377\321\305\275\377\323\307\277\376QGA\337\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\31\32\0\0\0\0\0\310\270\253\352" + "\321\301\263\377\320\277\261\377\262\243\227\227\0\0\0\0\0\0\0\0\377\377" + "\377\0\246\243\244:\322\316\317\377\250\237\230\377T=\40\377P<\"\376N:\"" + "\3719+\32#\0\0\0\0\260\247\244D\327\315\310\377\326\313\304\377\325\312\303" + "\377\325\312\303\377\325\311\302\377\325\311\300\377\324\307\275\377\273" + "\257\246\377\14\6\2g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\320\277\261\304\324\302\263\377\321\300\262\377\237\221\205\377\0\0" + "\0\1\0\0\0\0\0\0\0\0\317\313\314\353\316\312\312\376U@'\377K6\33\376K6\34" + "\3777(\26\"\373\274n\0\0\0\0\0\317\306\300\332\331\317\311\376\330\316\307" + "\377\327\314\305\377\327\314\304\377\330\314\304\377\331\314\302\377\330" + "\312\300\377\326\312\277\376mb[\374\0\0\0\2\2\2\1\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\312\272\253\343\325\304\265\377\322\301\263\377\250\232" + "\215\377\0\0\0Y\0\0\0\0\277\273\274[\331\325\326\377\233\221\210\377?*\22" + "\377@,\24\377;)\24n\0\0\0\0\377\377\377\0\267\257\252L\335\324\316\377\333" + "\321\313\377\331\317\310\377\317\305\275\377\240\220\203\377\332\316\306" + "\377\334\316\304\377\334\315\302\377\332\313\300\377\323\305\272\377$\34" + "\27\230\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=73\0yoe\32\333\311\271\377\327\305" + "\265\377\324\302\263\377\250\231\214\377\5\1\0}\0\0\0\0\317\313\314\310\333" + "\327\331\376\201r_\377D/\25\3779&\21\371\0\0\0\0\0\0\0\0\0\0\0\0\325\315" + "\307\341\337\325\317\376\336\324\315\377\331\317\311\377\221\201r\3772!\20" + "\377\335\321\310\377\337\321\307\376\337\320\305\377\336\317\303\377\333" + "\314\300\377\213\177u\377\0\0\0\40\17\14\14\0\0\0\0\0\0\0\0\0\0\0\0\0\313" + "\272\253\257\333\310\270\377\330\306\266\377\324\302\263\377\222\203w\377" + "\7\5\3\210\0\0\0\0\336\332\332\377\336\333\334\377ufU\377G3\27\377@-\23\254" + "\0\0\0\0\0\0\0\0\300\270\264S\344\332\325\377\342\330\322\377\337\325\317" + "\377\320\307\300\377K5\35\3778'\23\377yqk\336\342\324\311\377\342\323\307" + "\377\341\322\305\377\337\320\303\377\340\321\305\376?5.\312\0\0\0\0\0\0\0" + "\0\0\0\0\0\274\253\235`\340\315\274\377\334\312\271\377\331\307\267\377\322" + "\302\263\377]RH\377\13\11\7}\0\0\0\16\347\343\343\377\341\335\336\377\223" + "\211\200\3777&\24\3773$\21\233\0\0\0\0\0\0\0\0\336\325\320\347\346\333\325" + "\376\344\332\323\377\336\325\317\377\217\177p\377>*\23\3767%\22\376\0\0\0" + "\0\340\322\307\372\345\325\311\376\344\324\307\377\343\322\306\377\340\320" + "\302\377\257\241\224\377\0\0\0N\0\0\0\0\270\250\233N\340\315\275\377\337" + "\314\273\376\335\312\272\377\331\307\267\377\306\267\251\377\37\26\17\377" + "\12\7\7L\0\0\0\21\353\346\346\377\346\341\341\377\332\326\324\377@3%\377" + "+!\25\322\0\0\0\0\311\301\275[\352\341\333\377\350\336\327\377\345\333\325" + "\377\326\315\306\377K6\35\377&\33\21\377UH:\206\0\0\0\0\316\300\265k\350" + "\330\313\377\347\326\311\377\346\326\310\377\345\323\304\377\345\324\305" + "\376dWN\353\327\306\267r\343\320\300\377\342\317\276\376\340\315\274\377" + "\334\313\272\377\325\304\265\377wi\\\377\23\16\11\377\0\0\0\0\0\0\0\0\353" + "\346\346\377\353\345\345\377\350\343\342\377\307\301\277\377-&\40\377\0\0" + "\0'\344\334\327\354\354\342\335\376\352\340\332\377\345\333\325\377\222\202" + "s\3771\"\20\377xqm\376\271\256\246\3774.)\215\0\0\0\0\343\324\310\364\351" + "\331\313\376\351\327\311\377\347\326\307\377\346\324\304\377\354\331\311" + "\376\346\323\302\377\345\322\301\376\343\320\277\377\340\315\275\377\332" + "\310\270\377\261\242\223\377%\33\22\377\24\20\13\205\0\0\0\0\0\0\0\0\337" + "\332\331\310\356\351\350\376\356\350\346\377\354\346\344\377\332\323\317" + "\376\225\216\212\377\362\351\343\377\356\344\336\377\353\341\333\377\334" + "\322\314\377K6\36\377\35\26\21\377\360\343\331\377\350\334\322\377i\\Q\377" + "$\36\32o\320\303\267h\354\333\315\377\353\331\313\377\352\331\310\377\351" + "\327\307\377\351\325\305\377\350\325\303\377\346\323\302\377\343\320\277" + "\377\335\314\273\377\305\266\247\377<0#\376\36\31\22\347\0\0\0\0\0\0\0\0" + "\377\377\377\0\305\301\300G\364\356\354\377\362\353\351\377\361\352\347\377" + "\361\351\345\377\362\352\345\377\361\350\343\377\360\346\340\377\351\341" + "\333\377\225\205w\377,\35\15\377\230\217\212\377\356\341\327\377\353\336" + "\323\377\321\305\273\376+!\27\377\0\0\0\0\345\326\310\356\355\333\314\376" + "\355\332\312\377\353\330\310\377\353\330\307\377\351\326\304\377\346\323" + "\302\377\341\316\276\377\316\276\257\377L?1\376$\35\25\377\24\17\15\30\31" + "\23\17\0\0\0\0\0\0\0\0\0\0\0\0\0\342\335\333\275\365\355\353\377\364\355" + "\351\377\364\353\350\377\364\353\346\377\363\352\343\377\357\346\340\377" + "\340\330\322\377J5\36\377-&\"\377\373\357\345\377\361\343\331\377\357\341" + "\326\377\352\335\322\377\202ui\377\"\33\25\237\332\314\277\\\360\336\316" + "\377\356\333\313\377\355\332\311\377\354\330\307\377\351\326\305\377\344" + "\322\301\377\306\266\250\377NA4\376'\40\30\377\30\24\17""0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0nll\0\0\0\0\1\355\346\344\342\370\357\354\377\366\356\351" + "\377\366\354\350\377\364\352\345\377\356\346\340\377\227\210y\377%\27\10" + "\377\267\256\250\377\363\346\334\377\363\345\332\377\361\343\327\377\355" + "\337\324\377\335\321\307\3777+\37\377\0\0\0\31\351\330\310\357\357\335\315" + "\376\357\334\312\377\356\331\310\377\352\327\306\377\346\324\303\377^OB\376" + ")#\34\362\35\30\23,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\257\254" + "\254\0\0\0\0\0\350\342\337\315\370\357\353\377\367\356\350\377\363\353\345" + "\377\344\334\326\377J5\35\377\26\16\10\376\372\357\345\377\366\350\336\376" + "\365\346\333\377\363\344\331\377\355\337\324\377\303\266\251\3776%\22\376" + "*\37\23\302\334\315\277Q\362\337\316\377\360\334\314\377\357\333\311\377" + "\354\331\307\377\350\325\304\377\277\256\237\377\12\4\1u\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\364\355\351\367" + "\371\361\354\377\367\356\351\377\362\351\344\377\230\211z\377<(\23\377\32" + "\22\13\377\316\305\274\212\370\352\337\377\366\347\334\377\362\344\330\377" + "\351\335\323\377aP=\3771\"\22\377&\33\16c\0\0\0\0\347\325\305\346\361\335" + "\314\376\360\334\312\377\356\332\307\377\353\327\305\377\350\326\304\376" + "`UK\375\0\0\0\2\1\1\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\336" + "\331\326u\374\363\357\377\372\361\355\377\366\356\351\377\347\337\332\377" + "G3\34\377:'\23\377*\35\16\211\0\0\0\0\363\346\334\375\366\350\335\376\360" + "\342\327\377\261\243\226\3772\"\20\376+\37\20\341\0\0\0\0\377\377\377\0\311" + "\273\255N\364\340\316\377\360\334\312\377\356\332\310\377\353\327\305\377" + "\346\323\301\377\314\273\254\377\22\15\13\226\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\367\360\355\377\373\363\357\376\372\361\355" + "\377\364\354\350\377\230\211{\377;(\23\3776%\22\377\0\0\0\4\0\0\0\0\335\322" + "\311x\365\347\334\377\347\334\322\377M<)\3770\"\22\377\"\30\15>:)\26\0\0" + "\0\0\0\0\0\0\0\344\323\303\330\356\333\312\376\353\330\306\377\346\324\304" + "\377\245\227\212\376<61\377\"!!\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\265\262\2571\357\350\345\337\372\362\355\377\346\337\331" + "\376D0\32\3779'\24\3770!\20\205\0\0\0\0\0\0\0\0\0\0\0\0\354\340\326\367\224" + "\206w\3763$\23\376)\36\21\275\0\0\0\0\0\0\0\0\0\0\0\0\343\325\304\0\263\247" + "\2316\354\332\313\377\273\254\236\376RJC\377$\"!\355\37\36\36Q\0\0\0\0\35" + "\35\35\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\373\371\0\0" + "\0\0\0\326\322\317c\214\177r\323:)\26\3776&\24\377\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\275\265\257>@3#\2731&\32\374\22\14\3\22\25\17\11\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0tkd]/,+\305\"\"\"i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0H:*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0", };